|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
s函数报错“during flag=i call must be a real vector of length n” ,怎么解决?
8 @( c' ^% j' U& Z, D2 C. T代码如下:8 [* V+ [7 g" c9 K/ D. Z3 C
function [sys,x0,str,ts] = PMSM_chaos_controller(t,x,u,flag)
$ [8 C! ~" {7 d% v# tswitch flag,
4 M8 r8 D# a4 l7 h. A: y6 B% c case 0,
0 S0 Z! a8 ~$ Z, Q8 m J) ~ [sys,x0,str,ts] = mdlIniticializeSizes;7 T% W5 Q& P1 {- o4 {* q, j- T' d" C
case 3,
, f7 D3 L7 w9 R( H- e' p" Q sys = mdlOutputs(t,x,u);
1 B5 q4 \" G9 W; v case {1,2,4,9},
1 Z+ L! b$ d; ?( J2 i8 y sys = [];( A ]% h' Z9 o9 X# Q
otherwise,+ `4 f" T% j8 t0 o* t) o
DAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag));
- h# l0 j0 C: K6 |* {" u- g- bend1 C6 F+ s1 Y! F; U
4 O* D |( O' s! ~/ u6 `function [sys,x0,str,ts] = mdlIniticializeSizes
& Y& t: A4 n1 t; j2 K! G+ N. Msizes = simsizes;
* D# D2 F0 q/ Osizes.NumContStates = 3; %连续状态个数+ y, l; R; m* G1 B
sizes.NumDiscStates = 0; %离散状态个数6 B+ x* y6 w1 K: l2 w
sizes.NumOutputs = 3; %输出变量个数& B @/ x, G, H4 q% I( Z
sizes.NumInputs = 9; %输入信号个数
" Z4 x" [! Z h9 V! _sizes.DiRFeedthrough = 1; %输入直接传入输出信号否
" H8 V( P% B7 [0 }sizes.NumSampleTimes = 0; % at least one sample time is neededWO 一般来说为1个
# w6 K% p- y# h$ qsys = simsizes(sizes);
4 P6 G" P/ q+ d, S+ [' Tx0 = [0.001 0.001 0.001];
\1 J/ c2 R: e) W& n& I" ]str = [];
( q6 d" ?% m9 _ts = [];
5 }) Q* ?, }3 G7 j4 R. Z/ K
7 |$ p+ ~' o" y5 }& R) q. |function sys=mdlOutputs(t,x,u)
+ P2 J8 V7 L, ~5 p$ T: Ne1=u(1);e2=u(2);e3=u(3);
! X( V) p9 o5 b9 w$ [. W5 Ps21=u(4);s22=u(5);s1=u(6);4 t: F; @1 U% P8 g& t
es_w=u(9);3 Q8 I1 I& Y- n7 D. Q
alpha = 0.8;/ j; l- {0 v a
alpha1 = 5/7; beta1 = 7/5;
8 k3 Z" V. p. }- Y7 ealpha2 = 7/9; beta2 = 9/7;
1 {+ `6 x# v: g6 P7 Pk1 = 1;
% Q0 A0 s* c; s/ ?k2 = 1.2;3 G# a$ r2 b1 }" u$ Q/ z# a
miu = 10;
' r3 {+ m( ?. k& z7 q* I5 ~) }2 Idelta = 5.46;
7 e4 a; l6 |8 {% L) l6 P%assert(all(imag(u)==0), 'u is imaginary or nan');不起作用* w5 e2 I9 e7 Z. p! d. w
if e3==0
& Q, D8 u% g. |# L M 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;/ x$ D5 Q% S5 L9 m8 z5 w
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;
; ~# m) {( Y! y, Q1 q; 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;. B% q$ w, e; w" M7 [6 ?' W
else
( N/ l: Y9 g9 D- o2 {3 l! t7 c: w( z u1 = 0;& s$ ^$ o, `; U& z% U9 Y0 u
u2 = 0;+ M3 Z, H' O9 p9 p! }) T
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;( s8 i4 ~/ [: S) c, }, ]6 |. n
end$ n Y- Y0 ]* s8 e' i% y
sys(1) = u1;4 v5 p& E( V% t2 r! V4 Y6 t0 [
sys(2) = u2;
5 v# x) z# G- F' v7 ?) bsys(3) = u3; y$ {+ v, A4 ^& [+ C- N
复制代码 |
|