simulink仿真问题用的MATLAB function,总是出错,来此碰碰碰运气,希望大神解救,小女子不胜感激。

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

温馨提示:答案为网友推荐,仅供参考