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

s函数报错

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
s函数报错“during flag=i call must be a real vector of length n” ,怎么解决?
. `/ m% W5 {9 j. j代码如下:& ]& s! U; d$ V, V: C/ C
function [sys,x0,str,ts] = PMSM_chaos_controller(t,x,u,flag), f$ P$ i" h' k# W
switch flag,9 y3 R' q7 o6 o- K/ i, y( t' c" T
    case 0,# O( K9 e; J% A1 g8 @3 _2 t
        [sys,x0,str,ts] = mdlIniticializeSizes;
& z' Y  s# k0 ^2 E2 m    case 3,
. n) v& s' M8 h# s' |( w- `        sys = mdlOutputs(t,x,u);
" I4 Q" B# _+ r3 S    case {1,2,4,9}," b% Q* G9 B& E4 x3 q. w
        sys = [];! r$ d# W' L/ [6 A3 u3 |
    otherwise,
; w& [# q& h7 t* b# n        DAStudio.error('Simulink:blocks:unhandledFlag',num2str(flag));& ^, ?/ L; R' Y- B& [+ ]
end
8 R' c0 Z3 X, W9 |' H8 U
; ~! U: l# r' `9 {' Ofunction [sys,x0,str,ts] = mdlIniticializeSizes5 R8 b  {6 G+ z) R  w- a! e
sizes = simsizes;
" t& x4 V. u: `2 K' V( C' M5 q. \, Asizes.NumContStates  = 3;    %连续状态个数# Y" r* z+ Q( B+ K+ r) U" ?
sizes.NumDiscStates  = 0;    %离散状态个数: H" @1 g: y, ~4 u6 @3 L
sizes.NumOutputs     = 3;    %输出变量个数2 M5 Q$ S# B( a+ {" T
sizes.NumInputs      = 9;    %输入信号个数/ |7 _7 F9 s: @: v! Q- G) w
sizes.DiRFeedthrough = 1;    %输入直接传入输出信号否
: y% Z; r; U! ?# vsizes.NumSampleTimes = 0;    % at least one sample time is neededWO  一般来说为1个8 J* L9 h+ e- K
sys = simsizes(sizes);
5 m2 S9 i7 l1 ~/ }x0 = [0.001 0.001 0.001];
# N2 l3 t% `7 ]/ n0 Xstr = [];
' a' |% M2 `1 its = [];
' r( ]' i* U- d3 U9 d3 I2 G6 @& ?0 F; }- S5 S
function sys=mdlOutputs(t,x,u)  u- @1 Z0 k# d9 r5 L7 {
e1=u(1);e2=u(2);e3=u(3);
- |( ~' Q' E7 [) ~" q* _$ Ss21=u(4);s22=u(5);s1=u(6);, z& y2 Y* Q6 w3 W7 M& [6 N
es_w=u(9);1 J1 `: O" }, J' G' {
alpha = 0.8;
- j/ V2 W2 }' c; R6 valpha1 = 5/7; beta1 = 7/5;
) F8 i) n6 x9 ?4 D2 }0 Walpha2 = 7/9; beta2 = 9/7;. s- U# w. s7 p2 r5 q# b
k1 = 1;
7 r& T# E% A( u7 H0 n: o+ Yk2 = 1.2;
( d2 e- E- T- T# l4 Dmiu = 10;
; e0 U7 |* B9 Q# _; s+ A0 P% _% ~9 Udelta = 5.46;
$ |9 I+ h$ c+ x  x' j! t  s%assert(all(imag(u)==0), 'u is imaginary or nan');不起作用9 m; N1 W" t; y$ R3 e) T/ ]
if e3==0
5 g% u9 P7 `# w    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;
7 @) y5 k& ~( W! s. P3 k6 _    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;; D. A1 M/ T7 ~9 d
    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;4 g! g" G; {- k% E9 H
else
$ a: ^0 Y& |3 A# `2 L2 O9 r( `    u1 = 0;. q% v+ P0 U0 U5 y& c
    u2 = 0;5 L* I0 K% L+ z  k3 M
    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;
( z8 I& I4 Y8 ^" p* W8 W' x- gend
, O3 W( Z+ y- Isys(1) = u1;2 Z8 c6 i$ M" S9 r  H3 X  `  _
sys(2) = u2;! d5 S! k, W/ Q" I/ h8 i% P
sys(3) = u3;* s3 x1 I- N7 \% `! I
复制代码

该用户从未签到

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

该用户从未签到

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

5 }$ z' n0 e3 [9 m9 {- T: o+ J, P9 N你这个没有用到状态变量吧

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 12:26 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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