24小时热门版块排行榜    

查看: 483  |  回复: 1

小琪、

金虫 (小有名气)

[求助] S函数运行出错 求指导

这是我的一个式子 我编写的S函数是这样的:
function [sys,x0,str,ts] =Fz(t,x,u,flag)
switch flag,

  case 0,
    [sys,x0,str,ts]=mdlInitializeSizes(R);
    beta=345.1656;
    amp=0.8*10^(-6);
    i=beta*r;
    R=2.537*besselj(9,i)+0.43472*bessely(9,i)+3.3257*10^(-3)*besseli(9,i)+4.4643*besselk(9,i);

  case 1,
    sys=mdlDerivatives(t,x,u);

  case 3,
    sys=mdlOutputs(t,x,u,R,r);

  case 4,
    sys=[];

  case 9,
    sys=[];

  otherwise
    DAStudio.error(\'Simulink:blocks:unhandledFlag\', num2str(flag));

end

function [sys,x0,str,ts]=mdlInitializeSizes(R)

sizes = simsizes;

sizes.NumContStates  = 0;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 1;
sizes.NumInputs      = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   % at least one sample time is needed

sys = simsizes(sizes);

x0  = [];
str = [];
ts  = [0 0];


function sys=mdlOutputs(t,x,u,R,r)
if u>0
    h=sin(arccos((u-amp*R)/amp/R))+(1-u/amp/R)*arccos((u-amp*R)/R/amp)
else
    h=9*pi*(1-u/R/amp)
end
sys =3.68*10^6*int(h*R*r,r,0.0225,0.03);

function sys=mdlTerminate(t,x,u)

sys =9*pi*(1-u/R/amp);
  下面是我的simulink模型  运行的时候老是出错  式子的R表达式中J,N,I,K 都属于matlab中的贝塞尔函数 可以直接在matlab中表示出来  希望大家帮忙给看一下 谢谢大家了

S函数运行出错 求指导
模拟的式子


S函数运行出错 求指导-1
simulink模型


S函数运行出错 求指导-2
错误
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

信彼南山

木虫 (著名写手)

你这个思路应该就是有问题的
那个定积分可以考虑用数值方法计算
bessel函数没想明白怎么处理合适

其实完全不需要用s-function的
2楼2015-04-28 15:55:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 小琪、 的主题更新
信息提示
请填处理意见