simulink如何将m文件创建成一个模块

我的m文件如下,我要输出的是一个Fm与时间的关系的一个模块到simulink当中,但是一直都弄不出来,有的说用embedded matlab function,我弄了好久,也没弄出来,我只是想把Fm作为一个激励输入到simulink当中,求高手给个具体的方法和过程,或者帮我编一个s-function函数,我对simulink也不熟,s-function也不会

clc;clear;
syms fs fx;
k=0.6069;
zb=43;
b=11;
rp=72.5;
rrp=5;
E=206000;
i=1;
u=0.3;
kc=0;
P=zeros(1,5);
ks=P;
PP=zeros(1,3);
kk=PP;
ph=PP;
w=0.018;
for pha=3*2*pi/43:4*pi/43:12*2*pi/43
s=1+k^2-2*k*cos(pha);
T=k*(zb+1)*cos(pha)-(1+zb*k^2);
fs=pi*b*E*rp*s^(3/2);
fx=4*(1-u^2)*(rp*s^(3/2)+2*rrp*T);
ks(i)=fs/fx;
ks(i)
kc=kc+abs(ks(i));
kc
i=i+1;
end
kp=237190; %单齿刚度
chd=5.375; %重合度
nb=600/43; %摆线齿轮转速
wm=2*pi*nb*zb/60; %频率
t=0:0.001:0.3;
for j=1:1:3
kk(j)=sqrt(2-2*cos(2*pi*j*(chd-5)))*kp/(pi*j);
ph(j)=atan((1-cos(2*pi*j*(chd-5)))/sin(2*pi*j*(chd-5)));
kk(j)
ph(j)

end
km=kc+kk(1)*cos(wm.*t-ph(1))+kk(2)*cos(2*wm.*t-ph(2))+kk(3)*cos(3*wm.*t-ph(3));
% plot(t,km)
Fm=km*w*b/1000;
plot(t,Fm)

第1个回答  推荐于2016-02-18
%这是在MATLAB Function中实现的,把时间t作为输入,t用clock产生
function y = fcn(t)
k=0.6069;
zb=43;
b=11;
rp=72.5;
rrp=5;
E=206000;
i=1;
u=0.3;
kc=0;
P=zeros(1,5);
ks=P;
PP=zeros(1,3);
kk=PP;
ph=PP;
w=0.018;
for pha=3*2*pi/43:4*pi/43:12*2*pi/43
s=1+k^2-2*k*cos(pha);
T=k*(zb+1)*cos(pha)-(1+zb*k^2);
fs=pi*b*E*rp*s^(3/2);
fx=4*(1-u^2)*(rp*s^(3/2)+2*rrp*T);
ks(i)=fs/fx;
kc=kc+abs(ks(i));
i=i+1;
end
kp=237190; %单齿刚度
chd=5.375; %重合度
nb=600/43; %摆线齿轮转速
wm=2*pi*nb*zb/60; %频率
for j=1:1:3
kk(j)=sqrt(2-2*cos(2*pi*j*(chd-5)))*kp/(pi*j);
ph(j)=atan((1-cos(2*pi*j*(chd-5)))/sin(2*pi*j*(chd-5)));

end
km=kc+kk(1)*cos(wm.*t-ph(1))+kk(2)*cos(2*wm.*t-ph(2))+kk(3)*cos(3*wm.*t-ph(3));
Fm=km*w*b/1000;

y = Fm;本回答被提问者采纳
相似回答