找回密码
 注册
关于网站域名变更的通知
查看: 386|回复: 4
打印 上一主题 下一主题

s函数报错

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-9-28 11:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
s函数报错“during flag=i call must be a real vector of length n” ,怎么解决?$ ^' o0 E, C  R* C4 M& F$ e
代码如下:; h% D6 n& g# S, E8 h+ i: I7 _/ j) S
function [sys,x0,str,ts] = PMSM_chaos_controller(t,x,u,flag)/ t( ]; l5 z! E: P' E% i/ Q5 B
switch flag,$ k/ x! T1 ^" c
    case 0,& P/ I7 l( O( t7 u
        [sys,x0,str,ts] = mdlIniticializeSizes;6 W+ q$ S; o" J
    case 3,
, n# c1 a* A+ ?7 c% k% p2 O        sys = mdlOutputs(t,x,u);( o& _2 V7 X) Y7 K8 ^. B/ @- J1 \
    case {1,2,4,9},
+ K0 [" n3 f! H        sys = [];3 {- {, Y) J2 ]7 h  x& |% P
    otherwise,
: `$ V9 \4 b4 C+ q8 x        DAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag));
- {# h  _/ `$ z9 `  t: ^end
2 \8 @6 U' Z! B2 z
6 \/ v; J4 n5 Ufunction [sys,x0,str,ts] = mdlIniticializeSizes
. z9 H+ `/ s' G% a: ]sizes = simsizes;
4 M( j7 ?! n( r+ o' Jsizes.NumContStates  = 3;    %连续状态个数$ }# g& L! @* A
sizes.NumDiscStates  = 0;    %离散状态个数3 R& Q" ?: R) Z
sizes.NumOutputs     = 3;    %输出变量个数
* I4 A) s$ _+ |( A1 esizes.NumInputs      = 9;    %输入信号个数
  V$ _: t( D3 r, s1 gsizes.DiRFeedthrough = 1;    %输入直接传入输出信号否
* y! i) t8 `) \! xsizes.NumSampleTimes = 0;    % at least one sample time is neededWO  一般来说为1个
6 a0 |; A, ~  I9 e; M3 p: k7 K7 ?sys = simsizes(sizes);# ^6 l" u& v$ _" t" X
x0 = [0.001 0.001 0.001];  \; d1 {. L  @) B9 v% r
str = [];9 S. _' A. Z/ X5 i4 c, C0 B& |! O, w
ts = [];
5 r# T" D! M% o0 ^  h( |7 \3 r, g& o! g% K) R1 l
function sys=mdlOutputs(t,x,u)
& Y* {( |) d8 y6 }5 i; Le1=u(1);e2=u(2);e3=u(3);/ m9 k0 o$ f  N9 ]; X1 \( P
s21=u(4);s22=u(5);s1=u(6);% P3 m* u  W5 Q
es_w=u(9);2 z2 `# z2 K+ I) H, a$ Y  h
alpha = 0.8;
! a) V6 b$ T6 S8 F# B4 balpha1 = 5/7; beta1 = 7/5;
5 u! h) b% B5 x6 {9 X1 _0 ealpha2 = 7/9; beta2 = 9/7;' D7 k0 o* N: c& g# W
k1 = 1;' N! b  A3 v" N; R" m7 j  y
k2 = 1.2;
' B; k9 ]  C% G3 c% j  L- q3 p) A" `miu = 10;
4 H8 ^( e* Q+ O" s9 ]# cdelta = 5.46;# L- b3 s2 m+ T1 N. P  T; z
%assert(all(imag(u)==0), 'u is imaginary or nan');不起作用6 A6 k+ _; s: L; `2 n
if e3==0! }* V7 b8 T, `; ]2 m/ t- T0 Q! b
    u1 = e1 - es_w*e1 - 10*((abs(e1))^alpha)*sign(e1) - 10*e1 - k2*((abs(s21))^alpha2)*sign(s21) -k2*((abs(s21))^beta2)*sign(s21) - miu*s21;
: i# P% W: \7 R! H1 v    u2 = e2 - es_w*e2 - 10*((abs(e2))^alpha)*sign(e2) - 10*e2 - k2*((abs(s22))^alpha2)*sign(s22) -k2*((abs(s22))^beta2)*sign(s22) - miu*s22;
. S; u) G! ]4 p! X0 i+ y& d4 q    u3 = -delta*(e2-e3) - 10*((abs(e3))^alpha)*sign(e3) - 10*e3 - k1*((abs(s1))^alpha1)*sign(s1) -k1*((abs(s1))^beta1)*sign(s1) - miu*s1;
$ ^2 y* J, Z' relse
9 g  v$ H* G( R% R4 d+ t2 T! X    u1 = 0;
% R! D+ o7 a1 D6 S0 e2 @; X    u2 = 0;  U# G2 l/ d. Y6 d! U! [
    u3 = -delta*(e2-e3) - 10*((abs(e3))^alpha)*sign(e3) - 10*e3 - k1*((abs(s1))^alpha1)*sign(s1) -k1*((abs(s1))^beta1)*sign(s1) - miu*s1;( `$ V+ i% _5 }( }4 h0 t/ }5 e
end* r9 s+ P' d" a
sys(1) = u1;
) a6 w1 d# o3 F+ |0 |! o* b4 esys(2) = u2;
. `9 n% N) ]* }* m% Jsys(3) = u3;; W4 L0 f7 t% `/ h' v5 i7 I3 y
复制代码

该用户从未签到

2#
发表于 2020-9-28 13:09 | 只看该作者
帮你顶一下

该用户从未签到

3#
发表于 2020-9-28 13:21 | 只看该作者

0 _) H( l; H4 q9 [你这个没有用到状态变量吧

该用户从未签到

4#
发表于 2020-9-28 14:01 | 只看该作者
你上传一下simulink仿真图?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-6 19:55 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表