function [phir, ws, seita_s] = fcn(a, b)%#codegenes_alfa=a;es_beta=b;%编程中的一些常数 Llr=0.002191;Lls=0.002191;Lm=0.07614;Lr=Lm+Llr;Ls=Lm+Lls;Te=1-Lm*Lm/Ls/Lr;Ts=1e-5;t=0;% coder.varsize('ws');%给ws赋初始值for t=0;Ts;10{ %赋初值 if t=0 ws= 150 ;%不会 pufai_s_alfa=0; pufai_s_beta=0; end %低通滤波器 %f(ws)值wcmin=12;k=0.1;c=abs(ws);if c>wcmin fws=k*c;else fws=wcmin; end pufai_s_alfa_1=es_alfa*exp(-fws*Ts);pufai_s_beta_1=es_beta*exp(-fws*Ts); %反馈部分% cartesian to Polarpufai_s_juduizhi=sqrt(pufai_s_alfa^2+pufai_s_beta^2);pufai_s_juduizhi_l=pufai_s_juduizhi;%限制幅值一会再写%求得角度seita_sseita_s=atan(pufai_s_beta/pufai_s_alfa);%求得wsws=diff(seita_s);% Polar to cartesian pufai_s_alfa_l=pufai_s_juduizhi_l*cos(seita_s);pufai_s_beta_l=pufai_s_juduizhi_l*sin(seita_s); %得出反馈pufai_s_alfa_2=pufai_s_alfa_l*fws*exp(-fws*Ts);pufai_s_beta_2=pufai_s_beta_l*fws*exp(-fws*Ts);%得出总的定子磁链pufai_s_alfa=pufai_s_alfa_1+pufai_s_alfa_2;pufai_s_beta=pufai_s_beta_1+pufai_s_beta_2; %得出总的转子磁链pufai_r_alfa=Lr/Lm*(pufai_s_alfa+Te*Ls*es_alfa);pufai_r_beta=Lr/Lm*(pufai_s_beta+Te*Ls*es_beta); %求幅值phirphir=sqrt(pufai_r_alfa^2+pufai_r_beta^2);%输出[phir, ws, seita_s] = fcn(a, b)phirwsseita_s}end
看起来是一个电机模型的仿真,采用的是两相模型,图形是找的程序是自己的?
原理先不说,程序看起来是有语法错误,按理照着提示修改就可以了。
给你提醒两个问题:
for循环用的是“:”分割,end结束,不是用括号“{”
if判定是两个等号“==”,一个等号是赋值的意思
修改建议:
for t=0:Ts:10
if t==0
ws= 150 ;%不会
pufai_s_alfa=0;
pufai_s_beta=0;
end
%其他代码
end