7 ビュー (過去 30 日間)
Hugo Patenaire 2022 年 5 月 11 日

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 ?

サインインしてコメントする。

### 採用された回答

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
end
end
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

サインインしてコメントする。

### カテゴリ

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

R2019a

### Community Treasure Hunt

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

Start Hunting!

Translated by