MatrixMultiplication
Overview
Matrix multiplication of two input pins
Discussion
The matrix multiplication module implements simple two dimensional multiplication of two matrices. Both real and complex data types are supported. Complex input matrices produces complex output matrix.
Matrix representation of the each input pin and the output pin is as follows:
-
blockSize - represents the matrix rows
-
numChannels - represents the matrix columns
Transposing the first, second, or both matrices is also supported through the constructor argument MATRIX_MULT_OP. This allows users to avoid explicit traspose of the input matrices if the matrix dimension not valid for multiplication. Possible options of the argument MATRIX_MULT_OP:
-
A*B - input matrices multiplied as it is.
-
(A^T)*B - first matrix is transposed before the multiplication. i.e. dimension of the first matrix is transposed.
-
A*(B^T) - second matrix is transposed before the multiplication. i.e. dimension of the second matrix is transposed.
-
(A^T)*(B^T) - both the matrices are transposed before the multiplication. i.e. dimension of both matrices are transposed.
Module bypass behavior is same as active. i.e. module process function is called when the module status is bypassed.
Module Pack
Advanced
ClassID
classID = 1433
Type Definition
typedef struct _ModuleMatrixMultiplication
{
ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure
INT32 matrixMultOp; // Matrix multiplication operation. Supported are A*B, (A^T)*B, A*(B^T) and (A^T)*(B^T)
void * hardware_specific_struct_pointer; // This may point to a struct that varies based on the target platform
} ModuleMatrixMultiplicationClass;
Variables
Properties
| Name | Type | Usage | isHidden | Default Value | Range | Units |
|---|---|---|---|---|---|---|
| matrixMultOp | int | const | 1 | 2 | Unrestricted | |
| hardware_specific_struct_pointer | void * | state | 1 | Unrestricted |
Pins
Input Pins
| Name | in1(A) |
| Description | Input matrix A |
| Data type | float |
| Channel range | Unrestricted |
| Block size range | Unrestricted |
| Sample rate range | Unrestricted |
| Complex support | Real and Complex |
| Name | in2(B) |
| Description | Input matrix B |
| Data type | float |
| Channel range | Unrestricted |
| Block size range | Unrestricted |
| Sample rate range | Unrestricted |
| Complex support | Real and Complex |
Output Pins
| Name | out |
| Description | Output matrix |
| Data Type | float |
Scratch Pins
| Channel Count | 1 |
| Block size | 34 |
| Sample rate | 48000 |
Matlab Usage
File Name: matrix_multiplication_module.m
M=matrix_multiplication_module(NAME, MATRIX_MULT_OP)
Creates a matrix multiplication module for use in the Audio Weaver environment.
The module has two input pins and one output pin. Each input pin is a
two dimensional matrix. The number of input rows and columns
per input pin is determined by the upstream audio module. Output pin
matrix dimension is determined by the multiplication operation selection
from the argument MATRIX_MULT_OP.
Arguments:
NAME - name of the module.
MATRIX_MULT_OP - matrix multiplication type. Available options are
A * B
(A^T) * B
A * (B^T)
(A^T) * (B^T)
Default operation is A * (B^T)
Copyright (c) 2026 DSP Concepts, Inc.