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

s函数报错

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
s函数报错“during flag=i call must be a real vector of length n” ,怎么解决?* K* p( A1 i9 V  n
代码如下:" Q' J& K3 g5 L0 a; G4 r
function [sys,x0,str,ts] = PMSM_chaos_controller(t,x,u,flag)
1 F- m% {+ C$ U. m$ V! E2 {' Hswitch flag,
' x3 k- U! M- ?' x. m. \( v) r    case 0,3 u5 C+ n, y4 W! _9 S
        [sys,x0,str,ts] = mdlIniticializeSizes;. x) E& d( F: D
    case 3,! Z' |- c. i4 t/ A7 C: U/ g# I: E
        sys = mdlOutputs(t,x,u);. s+ s5 L" a% y6 \- g3 P
    case {1,2,4,9},* |9 p( m1 |! u  t+ V
        sys = [];
6 B. j; l$ w* [9 N' s    otherwise,! Q5 k- d6 w, |' I; x/ K
        DAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag));
; o; _; N+ v" n- Y& c/ m  Wend
) N$ L6 v/ R6 X9 l: G$ J0 l4 u
/ ~. S. h, @1 h) w- \function [sys,x0,str,ts] = mdlIniticializeSizes# x4 D5 l8 |6 U0 b5 b' z
sizes = simsizes;
' j3 a$ }& W/ i4 B- Q4 ssizes.NumContStates  = 3;    %连续状态个数- N1 j$ q) z! A5 t( b. G
sizes.NumDiscStates  = 0;    %离散状态个数. M& J' L3 n6 V, \
sizes.NumOutputs     = 3;    %输出变量个数0 X) h: `2 `/ j! X& b
sizes.NumInputs      = 9;    %输入信号个数  g, i8 B% y$ C* t
sizes.DiRFeedthrough = 1;    %输入直接传入输出信号否7 C7 a& n3 e  \  B, s
sizes.NumSampleTimes = 0;    % at least one sample time is neededWO  一般来说为1个* d8 t) P8 O  ]  c) X' n- |$ B
sys = simsizes(sizes);
( E5 F3 S# [( ]' gx0 = [0.001 0.001 0.001];3 r# `) d9 B# ]; n# @* Q3 Z% c
str = [];
1 o) x1 U; E" ets = [];7 I. @5 n, ]7 G. j+ p, ~7 J

# U2 F- ?8 Q2 S# l: l4 P+ Gfunction sys=mdlOutputs(t,x,u)
0 X1 @% S/ l6 ~/ G" Ue1=u(1);e2=u(2);e3=u(3);
" c( X8 P; p; N9 j% ks21=u(4);s22=u(5);s1=u(6);
8 ^# }$ z: F0 J4 d+ N; Mes_w=u(9);8 X5 q0 y2 K* [0 V
alpha = 0.8;" j. }- Q* [1 E$ b: h' I$ E
alpha1 = 5/7; beta1 = 7/5;
6 P# y$ C) s9 o+ @7 Xalpha2 = 7/9; beta2 = 9/7;
+ D' V" T% c7 X9 W, E2 n6 q: \k1 = 1;. J* q# f3 j) Q+ v* F( e
k2 = 1.2;
. T# P; a0 b( P/ c" Z0 ~* Zmiu = 10;+ W( c+ ^- W3 ~* d" x5 C' M
delta = 5.46;
- B' Q& l2 w. j3 `%assert(all(imag(u)==0), 'u is imaginary or nan');不起作用! A$ G; a+ ?5 B5 h* A
if e3==0
2 B8 V- j! y/ Q" P    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;( z  E( i4 e  u  E
    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;$ x+ e  v9 g( {* X6 ^8 X
    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;
7 v2 F8 d  X  F8 q: xelse
  N" k  r+ F) N  e+ p4 `1 r    u1 = 0;
: d/ W5 ]& H3 b* n; E: W& F6 m( H    u2 = 0;
! \3 X; b$ y. y" d9 \' h    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;
& Z5 }* j  S; h1 x; Fend
. l) S+ I2 L3 |1 Z( Q6 t+ V; v, Bsys(1) = u1;2 h! W% ~! {2 U( b& u$ k
sys(2) = u2;+ t5 O% r/ |' f. B0 Z
sys(3) = u3;
) k2 ]+ h2 I$ Z$ @复制代码

该用户从未签到

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

该用户从未签到

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

# C9 q4 o9 c# j" S你这个没有用到状态变量吧

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-14 04:45 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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