- 积分
- 1
- 注册时间
- 2008-4-2
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2010-8-15 18:35:49
|
显示全部楼层
来自 陕西西安
这个用s函数可以解决
嵌入式m函数可能不行
s函数当flag==4的时候,帮助文件里面写:
% Return next time hit for variable step sample time in SYS.
你去修改
sys=mdlGetTimeOfNextVarHit(t,x,u);
这个函数 ...
kokyo52 发表于 2010-8-13 15:23
按这个方法,修改的是s-函数的采样时间,而不是Simulink积分步长,且只能用于离散系统。而我是想修改Simulink中Solver的最大积分步长。
目前,可以通过下面两种方法成功修改最大积分步长(但不符合本贴要求):
1.通过GUI设置最大积分步长:
菜单:Simulation>Configuration parameters,Solver(ode45)>Max step size = 0.0001
2.在命令窗口(Command Window)通过命令修改当前Simulink的最大积分步长:
cset = getConfigSet(gcs,'Configuration')
set_param(cset,'MaxStep','0.0001')
而下面是我所希望的修改方式:
3.嵌入式M-函数修改当前Simulink的最大积分步长:
function y = fcn(u)
%
cset = getConfigSet(gcs,'Configuration');
if u<10
set_param(cset,'MaxStep','0.0001');
elseif u<100
set_param(cset,'MaxStep','0.001')
end
y = u;
%
不过不成功,命令窗口中错误提示如下:
??? Error using ==> get_param
Invalid Simulink object specifier.
Error in ==> getConfigSet at 11
hMdl = get_param(mdl, 'Object');
不知如何是好?望赐教! |
|