Matrix/Array Multiplication problem in Simulink

8 visualizzazioni (ultimi 30 giorni)
Hi Guys,
I desperately need help resolving a matrix/array multiplication problem in simulink. I have a dynamic system - a channel model precisely built in simulink and wish to implement the following matrix/array multiplication:
a(i,j,k)*b(j,k);
Can some please advise how to get this done.
Many thanks.
Odiri

Risposta accettata

Kaustubha Govind
Kaustubha Govind il 26 Apr 2011
Use the Product block from the Simulink->Math Operations library and set "Multiplication" parameter to "Matrix(*)".
  3 Commenti
Odiri Oghre
Odiri Oghre il 26 Apr 2011
I have even tried using the array vector multiplier to no avail.
Kaustubha Govind
Kaustubha Govind il 26 Apr 2011
Sorry about that - I missed the part about 'a' being a 3D array. One way of doing this is to iterate through 'a' by using the Iterated Assignment (look for section on http://www.mathworks.com/help/toolbox/simulink/slref/assignment.html) block inside a For Iterator subsystem, to get each a(i,:,:) which should be a 2D matrix. Now you can use the Product block to perform element-wise multiplication (not matrix multiplication as previously suggested) between a(i,:,:) and b.
Regarding your other question about not being able to import n-D signals using From Workspace block, note that you need to define the workspace variable either as a "Structure with Time" or Simulink.Timeseries object.

Accedi per commentare.

Più risposte (1)

Anisleidy Gonzalez
Anisleidy Gonzalez il 1 Nov 2019
You can use the Hadamart product, changing the dimensions of the 2D matrix or the best option is transforming the 3D matrix to a tensor and use the tensor toolbox

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by