数学建模社区-数学中国

标题: 帮忙看下程序的错误怎么改 [打印本页]

作者: deven1985    时间: 2011-8-31 11:23
标题: 帮忙看下程序的错误怎么改
本帖最后由 deven1985 于 2011-8-31 11:25 编辑 6 {9 N1 w& m. h2 a. h6 N# b
& u3 X6 T9 w: f3 d
今天编了一段程序,如下:* ?9 @6 D( k$ X: X
clear all;* m. m  ?7 n) H  b% q
close all;
( t3 o! M; q* t& q7 ta=59.36;b=7.42;m=2374.46;n=296.92;3 C% G- ^6 z+ x$ s( ]& k3 S
ts=0.001;* O( `4 D. |2 R  s
A1=[0,0,1,0;0,0,0,1;a,-b,0,0;b,-a,0,0];! j0 W: e0 p0 W" [8 z/ d
B1=[0,0;0,0;m,-n;n,-m];
9 C" E- j5 t1 G/ O0 m* s$ a' @2 eC1=[0,1,0,0];1 e7 c2 u* H; \5 n. h1 W" `& l  E( x
D1=[0,0];8 |' g" t% f# b8 g, a
[A,B,C,D]=c2dm(A1,B1,C1,D1,ts,'z');- w, K6 G9 ~2 }1 |
x=[0;0;0;0];
1 D) L" m& p& a* G; w* S* u( hr_1=0;r_2=0;g_1=0;g_2=0;0 P8 G) `9 e4 H
c=5.0;
+ Z6 f& n" ~( J! P  C7 I- _* E/ X5 Keq=5;
- C! k" U- d& e0 B% Q5 R* S" hq=30;) k: }. t" [! e, j
Ce=[c,1,1,1];
- J# T" V5 U( C! s+ ffor k=1:1:2000
% K8 g9 d$ w+ z5 I" T) xtime(k)=k*ts;
5 b* V; I7 L2 w3 R9 T$ |" y2 Q   r(k)=1.0;
4 R+ n7 {, g( x: V   g(k)=1.0;
& I1 M6 t' T& q2 c1 O/ J+ T   0 M# {& ]( M" g& H3 k  A* m7 f+ p
   %Using Waitui method   
. ?7 b( _# L) B. {; T0 x, o) J   dr(k)=(r(k)-r_1)/ts;) \. [0 h7 L# h
   dg(k)=(g(k)-g_1)/ts;! q+ N9 x2 G; O* l5 r$ g$ m6 R: ~3 [
   dr_1=(r_1-r_2)/ts;
" }% Z5 K7 _! K& _4 M; r5 R   dg_1=(g_1-g_2)/ts;! b& s# d8 V8 [: V8 ~  R- {! l! a
   r1(k)=2*r(k)-r_1;
9 d9 a7 |( J; X8 L9 T( v1 P   g1(k)=2*g(k)-g_1;, b9 x2 x3 z5 A6 H
   dr1(k)=2*dr(k)-dr_1;9 R6 I$ `8 \5 C
   dg1(k)=2*dg(k)-dg_1;% [! [9 u% r4 l1 i( f' a5 s
  
5 R; S4 F& `& x$ V# a  P' u- o8 F   R=[r(k);dr(k);g(k);dg(k)];
+ ]' O1 S$ ]: K/ E4 ]   R1=[r1(k);dr1(k);g1(k);dg1(k)];
% t1 t8 s% C8 s$ ~- p   # J  D6 O/ s: w& q7 v* f4 i! I
   E=R-x;
: q) H" `$ e2 ?' U7 C" w8 F   e(k)=E(1);
$ ?% F6 W* I5 d9 L   de(k)=E(2);
; ~3 H' o1 A* m* {/ G/ u& q: R   
& B$ Y: \1 v+ \, D$ m/ T5 H, ^% V   s(k)=Ce*E;
. u% \% R, W+ W7 \   
; f& G. X9 q3 r   X1=abs(e(k))+abs(de(k));8 Q* g5 y/ x, Q; j. r) ^! a
   * L0 g+ b$ e, E# ]; q3 T2 J7 d
M=3;   
$ S$ _* F* r* \; W  m  p6 rif M==1             %EXP reaching law
: }0 |! o% p5 \. Z3 \( I   ds(k)=-eq*ts*sign(s(k))-q*ts*s(k);
+ R/ k- |5 z3 [& N1 Q2 K3 |   u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));' t# M5 W* n: z7 Q" ^8 y
elseif M==2         %Variable rate reachine law0 C7 S8 z! _' A! d9 F* R1 M
   ds(k)=-eq*ts*X1*sign(s(k));
$ y- @5 D. j: {1 Z% b" R   u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));' V% ~4 g1 Z' i; x- c9 E" Y1 [5 _3 H- w! k
elseif M==3         %Coposite reaching law
* x8 L+ ~* m. |9 n" U$ X. o9 M/ u   k0=0.60;
7 v  S4 D. b* h   if X1>k0          %EXP reachine law. I: F( r4 |3 Z2 C$ I
    ds(k)=-eq*ts*sign(s(k))-q*ts*s(k);
; b6 }  M5 h3 R1 x3 h" n% I    u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));  , c# J# @$ R7 B% s6 `
elseif X1<=k0     %Variable rate reachine law) o1 u. T# @- v& y) q
   ds(k)=-eq*ts*X1*sign(s(k));
" E: U: O# |  [7 n2 t, h/ _6 c   u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
, f9 R3 O; {1 s4 A- {6 |3 S( W8 d   end
" v3 t$ {! M: H" iend9 \) X- |/ l& j% t; e, W
if u(k)>=10
) V. [" k0 s. P, H9 W& b   u(k)=10;$ i/ B0 l( W6 K8 Y2 M  ^
end& {. _3 w$ b+ ^4 @& `
if u(k)<=-10
7 ^8 S7 b1 z$ a' O! x  Z0 P   u(k)=-10;
8 k( `0 E' J* k$ Eend
" Y% t, M) I3 U6 nx=A*x+B*u(k);
3 ^* U% y  \8 L5 zy(k)=x(1);
- L5 v# C1 e* O4 C3 O- k3 L%Update Parameters$ Z, `) |8 o! Q( d$ F+ m& H  P
r_2=r_1;
/ f" U& W; v% F; k: Gr_1=r(k);4 m8 m/ N/ K8 ]: P3 Q  Y
end! w- P2 q7 q: s" S5 S# O
figure(1)
$ O+ g+ b8 w* r8 }2 q/ @plot(time,r,'r',time,y,'b');1 i3 X1 k9 A& e. x+ Q( I% E
xlabel('Time(second)');ylabel('Position tracking');
$ Z( e0 L3 z4 B  j9 Efigure(2)
2 t- n- a) e& V3 R$ Oplot(time,s,'r');; C3 {7 O# a0 A- ]
xlabel('Time(second)');ylabel('Switch function s');
, c$ v/ G+ b0 ?2 i; Sfigure(3)
- A0 F0 X4 m+ yplot(e,de,'r',e,-c*e,'b');& Q, X3 A: B& b2 N
axis([0,0.001,-0.01,0]);' e, B' I. W: w
xlabel('e');ylabel('de');2 A8 v# ^$ H0 U% s& \$ _
figure(4). L, T8 a- W0 y) \6 B. m0 b0 b
plot(time,u,'r');
2 r8 C' g) x1 r1 H) P2 B; Z+ S+ Y$ \9 ^xlabel('Time(second)');ylabel('u');2 o+ [6 K% c' J+ L2 X: ?- W1 [: E

/ [* A3 p6 `# ?1 p8 l7 `! k运行后系统提示:
( t& b0 f3 r: n: E! m+ r0 D7 Q$ [! ~
6 k" h: b6 w- Q- O" w3 W6 `6 @8 k??? Error using ==> inv
: R9 c! G' Y9 @1 {0 e5 v1 PMatrix must be square.) P- H& ?" Z3 [0 p
Error in ==> matlab02 at 56
, f5 k8 i4 J% J( [6 d7 }    u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
' M6 l5 H* W2 W  K6 [9 q  O$ k2 J8 A; d+ z: O
(错误行已用红色标出)
8 {; f' V! ^$ j; Q9 q9 v
7 v5 p3 w( W, a; |麻烦大家帮我看一下给怎么改,谢谢了!!
( O! q1 U# l4 ~5 ]7 k
作者: alair006    时间: 2012-2-7 17:02
囧了,下了无数不知道用哪个有用1340929989866650
作者: mindset    时间: 2013-6-2 16:06
路过,不会,帮顶!!!!
作者: 天十    时间: 2013-6-2 17:59
Matrix must be square 这句话是说你的某个矩阵必须是方阵啊" k$ @6 H: H5 I8 j' U2 I* t; e
其中某个矩阵不是方阵才出现这样的错误的
作者: laprovence    时间: 2013-6-2 21:17
从你写的程序来看,Ce是一个1*4的矩阵,而B求出来则是一个4*2的矩阵,Ce*B应该是一个1*2的矩阵,是不可能求逆矩阵的,只有方阵行数列数相同才能求逆。
作者: 云月星生    时间: 2013-8-6 14:50
新手,来看看




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5