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

s函数报错

[复制链接]

该用户从未签到

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

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
复制代码

该用户从未签到

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

该用户从未签到

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

9 F2 Y7 [+ ~: b' f  j你这个没有用到状态变量吧

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-27 19:22 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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