在simulink中调用matlab function函数出错,请高手解答
小弟想实现以下功能:(1)当时间在(0 0.0633)之间,电流i=0,ty=0.0017*i.^3-8.93*i.^2+41.68*i-1.61,所以也等于0,f=14.64*ty+253.4*1.9/4*v;所以在这段时间内等于f=253.4*1.9/4*v;(2)时间在(0.0633 0.0663)内, i=0.5*(-1.354*10^10*(t-0.0633).^4+1.361*10^8*(t-0.0633).^3-5.484*10^5*(t-0.0633).^2+1109*(t-0.0633)); ty=0.0017*i.^3-8.93*i.^2+41.68*i-1.61;f=14.64*ty+253.4*1.9/4*v;以后都差不多,就是分段选择,我将文件名为mr_new.m,在simulink中利用MATLAB FUNCTION模块调用,但是总是出现错误“Error evaluating MATLAB function in 'untitled/MATLAB Fcn'.MATLAB error message:Undefined function or variable "i"”
请各位高手救救小弟,不胜感激!
程序如下
function f=mr_new(in)
v=in(1);
t=in(2);
if(0<=t<0.0633)
f=253.4*1.9/4*v;
elseif(0.0633<=t<=0.0663)
i=0.5*(-1.354*10^10*(t-0.0633).^4+1.361*10^8*(t-0.0633).^3-5.484*10^5....
*(t-0.0633).^2+1109*(t-0.0633));
ty=0.0017*i.^3-8.93*i.^2+41.68*i-1.61;
f=14.64*ty+253.4*1.9/4*v;
elseif(0.0663<=t<0.1663)
i=20*t-0.826;
ty=0.0017*i.^3-8.93*i.^2+41.68*i-1.61;
f=14.64*ty+253.4*1.9/4*v;
elseif(0.1663<=t<0.1693)
i=0.5*(-1.354*10^10*(t-0.1663).^4+1.361*10^8*(t-0.1663).^3-5.484*10^5....
*(t-0.1663).^2+1109*(t-0.1663));
ty=0.0017*i.^3-8.93*i.^2+41.68*i-1.61;
f=14.64*ty+253.4*1.9/2*v+732;
elseif(0.1693<=t<0.3693)
i=10*t-1.193;
ty=0.0017*i.^3-8.93*i.^2+41.68*i-1.61;
f=14.64*ty+253.4*1.9/2*v+732;
elseif(0.3693<=t<0.3723)
i=0.5*(-1.354*10^10*(t-0.3693).^4+1.361*10^8*(t-0.3693).^3-5.484*10^5....
*(t-0.3693).^2+1109*(t-0.3693));
ty=0.0017*i.^3-8.93*i.^2+41.68*i-1.61;
f=14.64*ty+253.4*1.9*2/4*v+732*2;
elseif(0.3723<=t<0.4723)
i=20*t-6.946;
ty=0.0017*i.^3-8.93*i.^2+41.68*i-1.61;
f=14.64*ty+253.4*1.9*3/4*v+732*2;
elseif(0.4723<=t<0.4753)
i4=0.5*(-1.354*10^10*(t-0.4723).^4+1.361*10^8*(t-0.4723).^3-5.484*10^5....
*(t-0.4723).^2+1109*(t-0.4723));
ty=0.0017*i.^3-8.93*i.^2+41.68*i-1.61;
f=14.64*ty+253.4*1.9*3/4*v+732*3;
else
i=81*t-6.946;
ty=0.0017*i.^3-8.93*i.^2+41.68*i-1.61;
f=14.64*ty+253.4*1.9*3/4*v+732*3;
end
0<=t<0.0633 变为
0<=t & t<0.0633
页:
[1]