zhuchao1234 发表于 2011-10-28 22:25:43

在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

anbcjys 发表于 2011-10-31 06:49:27

0<=t<0.0633 变为
0<=t & t<0.0633
页: [1]
查看完整版本: 在simulink中调用matlab function函数出错,请高手解答