Updating simulink block parameter as the simulation runs.
2 次查看(过去 30 天)
显示 更早的评论
Hello!
I'm new to Matlab and I'm wondering if this is possible.
I have a custom block with a mask that takes in 3 user-input parameters. One of the parameters is frequency and I want to vary the frequency with time while the simulation is running. I looked all over the internet and I found a suggestion to replace the frequency parameter with a workspace variable array, with the array setup as [time1 value1;time2 value2; time3 value3....]. I tried this, but I got an error saying that the there was an issue with the blocks in the subsystem reading the arrays properly. I placed this code into the InitFnc callback.
Am I doing going about this correctly? If so, what do I modify to ensure that the frequency input ports are correctly reading an array input?
If not, is there a different way I can go about changing the frequency with time? I am trying to do everything using a script, rather than including blocks like time steps since the block is masked.
Thanks!
0 个评论
采纳的回答
Fangjun Jiang
2020-7-7
setting array value as [time1 value1;time2 value2; time3 value3....] works for signal, not for parameters. Use this approach instead
set_param(YourModel, 'SimulationCommand', 'pause');
set_param(YourBlock, parameter, value);
set_param(YourModel, 'SimulationCommand', 'continue');
5 个评论
Fangjun Jiang
2020-7-8
It has nothing to do with other functions. The Assertion block is calling PauseFcn, so you have to have a .m script called PauseFcn.m in your MATLAB path.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Electrical Sensors 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!