数学建模社区-数学中国
标题:
帮忙看下程序的错误怎么改
[打印本页]
作者:
deven1985
时间:
2011-8-31 11:23
标题:
帮忙看下程序的错误怎么改
本帖最后由 deven1985 于 2011-8-31 11:25 编辑
! z* T4 t7 X, A+ ~$ Q
! o- B+ V5 w. T' n1 v( \; v! J7 V
今天编了一段程序,如下:
6 l. t. L$ E. o9 \9 o
clear all;
# Y* |% W1 m$ M, m' ?) ~6 D
close all;
1 ^1 ` k/ q: k2 j G
a=59.36;b=7.42;m=2374.46;n=296.92;
4 E0 w8 s3 w# ?& _) T! n8 q
ts=0.001;
, S/ ]+ z1 e. }) u' ^
A1=[0,0,1,0;0,0,0,1;a,-b,0,0;b,-a,0,0];
$ Y( {, X/ \) v5 |
B1=[0,0;0,0;m,-n;n,-m];
. t3 h* t& F9 p. @# n4 V
C1=[0,1,0,0];
. _7 i- ~* V* O/ P* m; k, S8 f
D1=[0,0];
3 ?. w+ C" c& {% B9 ~
[A,B,C,D]=c2dm(A1,B1,C1,D1,ts,'z');
. [- Y6 l. T4 |" R! w" B5 S
x=[0;0;0;0];
- x% ^2 M; _: }. V$ f# }9 e) E
r_1=0;r_2=0;g_1=0;g_2=0;
- L1 e% e, q8 j) t
c=5.0;
- Q; W+ ?, U! G! Q" Z! Y
eq=5;
; d/ q7 f4 {7 S* a' Q" O: ^
q=30;
9 Q$ K: x) S3 ?2 b) a* h
Ce=[c,1,1,1];
) g) h) \) g1 g2 I; Q" y/ U9 o
for k=1:1:2000
& [3 a; n) K3 I0 i( u
time(k)=k*ts;
: y+ p5 V8 R; s9 W/ Q
r(k)=1.0;
# j, {7 H* l% @) g4 n& D/ G
g(k)=1.0;
! B: E+ X* F+ i; U! u
2 v3 Z4 |+ x3 U0 N0 |0 \' Q4 m
%Using Waitui method
2 Z$ q) l! m9 X3 G
dr(k)=(r(k)-r_1)/ts;
; R+ m i8 H- V7 i; p- p
dg(k)=(g(k)-g_1)/ts;
# ~& L# Y, y* z' x1 y
dr_1=(r_1-r_2)/ts;
' l4 K/ i7 ]. D/ L$ L; a! k
dg_1=(g_1-g_2)/ts;
) M" L$ _9 ?; t% M/ v9 L6 z' I
r1(k)=2*r(k)-r_1;
( o* y! z& l8 P. u, `
g1(k)=2*g(k)-g_1;
7 ?0 K5 w S; u# |7 o* Q& [
dr1(k)=2*dr(k)-dr_1;
- f8 d! X' Z: ~9 R
dg1(k)=2*dg(k)-dg_1;
+ R- I' K, N3 |+ ^( G& U
5 O& b7 S; d! I& O- k" O5 t
R=[r(k);dr(k);g(k);dg(k)];
) m1 S `1 l7 [% m( [! W- b
R1=[r1(k);dr1(k);g1(k);dg1(k)];
9 X* n6 Z* {+ N
& g) ^3 \' C) ~8 z$ v* p
E=R-x;
' k: `$ Y; S5 z7 z: r' S
e(k)=E(1);
$ b5 t! o1 k5 U! H# h9 J
de(k)=E(2);
3 F2 A# [9 ?% e% _; ^: X
* f% I5 r1 O: l) ~; [
s(k)=Ce*E;
4 B% l, l9 F( h
0 h: X: g& r& K, ^0 b
X1=abs(e(k))+abs(de(k));
r. m9 T% a7 E% B( E" K2 g
4 K: X! c; b; J6 T+ k _6 X. V
M=3;
$ S1 q- \, k1 Y1 [5 r5 q
if M==1 %EXP reaching law
7 K# Q8 d- \. n$ p
ds(k)=-eq*ts*sign(s(k))-q*ts*s(k);
! D' S( `( N* z' c" O# ]
u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
' N) E$ I' t0 e4 F0 ^% M) k
elseif M==2 %Variable rate reachine law
/ F* Y) u" p+ r6 u) g* ~5 _1 D h
ds(k)=-eq*ts*X1*sign(s(k));
# g1 ?8 O* u- Y* j- y
u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
0 J( M/ B$ r" b
elseif M==3 %Coposite reaching law
% k" ?- a% \0 N6 B [) @
k0=0.60;
2 n6 x/ m3 D3 r# J5 p0 Q
if X1>k0 %EXP reachine law
. K6 f) C9 Z3 V; } z0 ~
ds(k)=-eq*ts*sign(s(k))-q*ts*s(k);
, ~$ B' X: Q+ R# G, I4 K6 @" ^ X
u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
$ Z- G$ K: h5 H
elseif X1<=k0 %Variable rate reachine law
' [5 g0 C6 J2 @- `6 ^
ds(k)=-eq*ts*X1*sign(s(k));
; ? @ ?5 Y% H$ G
u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
7 b( _9 u4 ~/ ^& |& L
end
1 ^! b& a- l+ y* a( s+ Q
end
4 U" _' [" _) z* U5 h0 o/ Y' H) Y
if u(k)>=10
+ b2 O" Q8 h( d) y
u(k)=10;
' L o: d) r1 p0 D
end
; z! n& M+ o8 N
if u(k)<=-10
5 m# ~ ?! Q# e! K' e
u(k)=-10;
6 n- e0 A4 j, ], ~
end
" G* u1 ?5 p* E) y. O& T! V: h
x=A*x+B*u(k);
9 o/ `, V, o' \& o- q. U* ]
y(k)=x(1);
% ~+ f+ y7 Q, ]: ?) {7 l w& D; O
%Update Parameters
4 K2 h8 H2 L; ]: B
r_2=r_1;
5 z @2 @" M/ I1 w% X" E
r_1=r(k);
! i, v1 _! x2 u5 f" K
end
4 Y0 g- P) D# O! N& w7 b
figure(1)
! I* ]0 I0 h! |. N: D& A3 ^
plot(time,r,'r',time,y,'b');
+ Y0 {1 a' \ S$ t5 ` o: M9 k3 p
xlabel('Time(second)');ylabel('Position tracking');
/ t' f' w( ?6 |$ j- Q: m
figure(2)
4 u. H( G3 I7 k/ y @! t% }
plot(time,s,'r');
2 F) Y0 @. M! p0 h5 R* Q* I
xlabel('Time(second)');ylabel('Switch function s');
" m, f1 C* O2 [! `4 s3 q! ]
figure(3)
$ S1 @. R: ^5 Z6 V
plot(e,de,'r',e,-c*e,'b');
- W$ k4 h9 }8 M5 I" e, t% t
axis([0,0.001,-0.01,0]);
1 s* a( L- v5 @: `4 ?! T0 z k
xlabel('e');ylabel('de');
- Z$ [( d; s* M( F) b
figure(4)
8 \9 A0 w3 I# a
plot(time,u,'r');
) q0 @( U7 j$ ^& e/ l& z$ y) C! S
xlabel('Time(second)');ylabel('u');
7 j. e, o" `) T4 w6 K* l
# p; L& R% v! s0 p2 y) R
运行后系统提示:
/ @0 c* {9 f9 I1 Z3 t4 {# {
! \' ]# g& t+ J6 _6 K6 W1 G
??? Error using ==> inv
1 |6 U) H5 `" s p0 O0 ]5 J8 B( _
Matrix must be square.
0 W; E" s$ N7 Y3 s v
Error in ==> matlab02 at 56
8 p$ m* o, C. p/ V
u(k)=inv(Ce*B)*(Ce*R1-Ce*A*x-s(k)-ds(k));
+ h2 ^8 X' v0 Y" L3 S
3 Q$ Q1 `; A* V4 f7 Y
(错误行已用红色标出)
7 O5 K& A4 S$ ?. @. D& O+ p
) q( a& g; K- z. k" v* `- Q
麻烦大家帮我看一下给怎么改,谢谢了!!
7 @2 V+ @1 B! C# u4 f2 y/ }5 ]
作者:
alair006
时间:
2012-2-7 17:02
囧了,下了无数不知道用哪个有用
1340929989866650
作者:
mindset
时间:
2013-6-2 16:06
路过,不会,帮顶!!!!
作者:
天十
时间:
2013-6-2 17:59
Matrix must be square 这句话是说你的某个矩阵必须是方阵啊
1 h3 @! q- j5 Z' \: H- O$ T
其中某个矩阵不是方阵才出现这样的错误的
作者:
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