Use inputs of a user defined Matlab function block as global variables whithin the block

2 visualizaciones (últimos 30 días)
In my simulink model there is a Matlab function which consists of many functions:
function block_output = MatFun1(input1, input2, ...)
...
block_output = MatFun2(x, t)
end
function y = MatFun2(x, t)
y = f(x, t, input1, input2, ...)
end
Mathematically MatFun2 is just a function of x and t. Therefore, I would like to keep the notation intact. However, the function requires the block's inputs as well. I tried to globalize the variables input1, input2, ... to be able to use them in MatFun2 as well:
function block_output = MatFun1(input1, input2, ...)
global block_inputs
block_inputs = [input1, input2, ...]
...
block_output = MatFun2(x, t)
end
However, I encounter the following error:
Global declaration not resolved to a Data Store Memory block registered via the Ports and Data Manager.
As I mentioned, I do not want to pass input1, input2, ... to MatFun2 as arguments. Moreover, I want these variables to be known just within this block (not the whole simulink model). Nested functions are also not desirable. What options do I have and how can I resolve the problem?
  4 comentarios
Swarooph
Swarooph el 23 de Jun. de 2017
Good news: I was able to make the error disappear. Please find the modified model attached. I declared a Data Store Memory called inputs in the Edit Data dialog of MATLAB function.
And I also put in a Data Store Memory block in the Simulink model referring to the same.
Running this model does not error anymore.
Not so good news: In my experience of using Simulink, it seems like you are trying to model something in MATLAB that is perhaps easier to just do in Simulink itself using other blocks.. Of course I don't have the big picture and maybe you have come to this design pattern after a lot of research. I am just guessing here. But the path you are set on doesn't seem very promising to me with MATLAB functions, global variables and such. Just my 2 cents.
Ali Baradaran
Ali Baradaran el 23 de Jun. de 2017
Editada: Ali Baradaran el 23 de Jun. de 2017
Dear Swarooph,
Thanks for your reply. Since you have commented under my question (instead of answering it), I am not able to vote for it. But thanks again. Regarding your tip, I will reconsider my design.

Iniciar sesión para comentar.

Respuesta aceptada

Swarooph
Swarooph el 23 de Jun. de 2017
This documentation shows how to do this: How to Use Data Store Memory Blocks
Specific fix to the question in the comments to the question.

Más respuestas (0)

Categorías

Más información sobre Simulink Functions en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by