How can I create a bus for Simulink from a Matlab function?
4 次查看(过去 30 天)
显示 更早的评论
I have a function (myFunc) where I call a Simulink model that uses bus structures.
Before calling the model from myFunc, I used the following commands to create the bus and just run the model:
% References
busInfo2=Simulink.Bus.createObject(REF);
RefVectorBus = eval(busInfo2.busName);
clear slBus1; %(slBus1 is the default name. As I changed it to RefVectorBus, I can clear slBus1)
% Controller Configuration
busInfo3=Simulink.Bus.createObject(controllerConfig);
controllerConfigBus = eval(busInfo3.busName);
clear slBus1;
But now that I have this:
output = myFunc (input)
//declare model parameters (as I use current workspace)
//initialize bus:
% References
busInfo2=Simulink.Bus.createObject(REF);
RefVectorBus = eval(busInfo2.busName);
clear slBus1;
% Controller Configuration
busInfo3=Simulink.Bus.createObject(controllerConfig);
controllerConfigBus = eval(busInfo3.busName);
clear slBus1;
//call the model (USING CURRENT WORKSPACE)
SimulationOut = sim('myModel','SaveOutput','on', 'SrcWorkspace','current');
...
end (myFunc)
The problem is that Matlab doesn't allow me to create the bus ("Undefined function or variable 'slBus1'"). Is there a problem with the current workspace? Is matlab looking for the bus info in the base workspace?
I need the current workspace because the myFunc is a fitness function handle for a genetic algorithm and some of the Model parameters are beig estimated so I have to define them INSIDE myFunc and not in the base Workspace.
How can I solve this? Thanks to you
0 个评论
回答(1 个)
Josep Virgili LLop
2017-3-29
编辑:Josep Virgili LLop
2017-3-29
When using `Simulink.Bus.createObject` Matlab assigns the bus object to the base workspace and, as far as I know, this behavior can't be changed.
If you want to recover the Simulink bus in the current workspace use `evalin`
busInfo=Simulink.Bus.createObject(struct);
slBus = evalin('base',busInfo.busName);
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Manual Performance Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!