在函数中使用时,有没有办法在 Matlab 中为“线性化”定义源工作区?
这是一个简短的最小工作示例:
clear all
sys = 'watertank';
open(sys)
sys_io(1) = linio('watertank/PID Controller',1,'input');
sys_io(2) = linio('watertank/Water-Tank System',1,'openoutput');
linsys = GetLinsys(sys,sys_io);
disp(linsys.a)
功能是:
function linsys = GetLinsys(sys,sys_io)
A = 10;
linsys = linearize(sys,sys_io);
end
输出是
-0.0500
因为linearize
在“基本”工作区 (A=20) 中使用 A 的初始值,而不是在“当前”工作区 (A=10) 中的值。
但是,我希望
-0.1000
如果函数的代码包含在脚本中,则会获得此信息:
clear all
sys = 'watertank';
open(sys)
sys_io(1) = linio('watertank/PID Controller',1,'input');
sys_io(2) = linio('watertank/Water-Tank System',1,'openoutput');
A = 10;
linsys = linearize(sys,sys_io);
disp(linsys.a)
因此,问题是:如何使用该函数获得相同的结果?
对于sim
命令,这可以通过选项来完成:
options = simset('SrcWorkspace','current');
sim('modelname',[],options)
看这里。但是,我在线性化选项中找不到类似的东西。
非常感谢您的任何帮助或建议!