Variable-size matrix in Simulink

15 ビュー (過去 30 日間)
Hugo Patenaire
Hugo Patenaire 2022 年 5 月 11 日
回答済み: Rishav 2023 年 9 月 13 日
Hello everybody !
I have a question about variable size matrix in Simulink. Indeed, I would like to generate a matrix in Simulink (sized [1xN] or [MxN]), with M and N the dimensions of the matrix calculated in Simulink using Workspace variables.
However, Simulink does not understand this type of signal to be generated during the simulation, and must automatically refer to Workspace variables.
One solution I used to overcome this problem was to create a [1000x1000]-sized matrix of zeros, and assign the values I wanted in this matrix. I would then simply resize this matrix to a matrix of dimension MxN.
However, I have the same problem as before, even when trying different matrix resizing algorithms, because I need either M or N dimensions at a specific point.
Do you have any suggestions on how to do this ? Is it possible to get around this problem in an elegant way, or is it impossible on Simulink ?
Thanks in advance for your suggestions and answers ! Have a nice day ! :)


Rishav 2023 年 9 月 13 日
Hi Hugo,
To generate a variable sized matrix in Simulink, you can use a MATLAB function block. Inside the MATLAB function block, you can write MATLAB code to create and populate the matrix.
Here is an example for the same:
function outputMatrix = generateMatrix()
%Calculate M and N based on your requirements
M = calculateM();
N = calculateN();
%Initialise a all zero matrix with the M*N dimensions
y = zeros(M,N);
%Populate the matrix with desired values
for i = 1:M
for j = 1:N
y(i,j) = calculatedValue(i,j); %Desired value calculation
Here in this code, calculateM() and calculateN() functions are used to calculate the desired value of dimensions M and N respectively. The function calculatedValue(i,j) is used to calculate the desired matrix elements.
Based on this, you can create a variable sized array in Simulink.
Thank you,
Rishav Saha

その他の回答 (0 件)


Help Center および File ExchangeSimulink についてさらに検索




Community Treasure Hunt

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

Start Hunting!

Translated by