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't….it 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
Best Answer