Setting a fixed sized matrix size in Simulink at run time

9 vues (au cours des 30 derniers jours)
dvd7e le 6 Jan 2021
Commenté : 창현 김 le 20 Sep 2022
In Simulink I would like to create a matrix that is of fixed size during a run (e.g. as opposed to a variabel sized matrix), but to have those dimensions be tuneable from run to run based on a parameter. Is this possible?
For example, I would like to be able to do something along the lines of the following, which would be as embedded matlab within Simulink
function A = myEmbeddedMatlabFcn(n)
% Note: n is a *Parameter" defined in the workspace, and NOT an input!
A = randn(n,n);
where n might be 5 for one simulation run, and 3 for another simulation run, but in both cases it is constant during the respective simulation runs, it is only varies across runs.
In theory if I define "n" in the workspace before Simulink compiles, I don't see why it shouldn't be able to handle this. But it can' always chokes and says that "Data 'n' is inferred as a variable size matrix..." even though it should be constant.
(Note: For my specific application, I am aware of, but would like to avoid, a few possible workarounds: a) variable sized matrices and b) pre-allocated buffers that are larger than necessary and then only use/work on a subset of data.)
Thank you

Réponse acceptée

Timo Dietz
Timo Dietz le 6 Jan 2021
First, add an input 'n' of type „Parameter“ to the Matlab function block using the Simulink ModelExplorer and un-check the “Tunable” option.
Mask the parent block of the function and add a dialog parameter which is stored to internal variable 'n'.
Now, the variable name you state in the input box of the mask will be taken from workspace and propagated to n for your function.
  3 commentaires
dvd7e le 11 Jan 2021
Yup, that did it, thank you!
창현 김
창현 김 le 20 Sep 2022
Wow! Thank you so much.

Connectez-vous pour commenter.

Plus de réponses (0)


En savoir plus sur Create Block Masks dans Help Center et File Exchange




Community Treasure Hunt

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

Start Hunting!

Translated by