自学,一本教程上的一个例子:& N" m7 o W: k- N! u, K* ~9 |+ ^
编程输入范德蒙德型矩阵。 + I9 I6 D ^- A+ D; s在MATLAB命令窗口输入以下代码: %%实际操作的时候,是输到M文件里面的3 n% q% u0 H/ A) Z6 A
clear all;& X" _ ]: j. w% h- w% @
x=[-1,0,1,2,3]';- i8 n% ]+ e0 s% q& Y5 d
for i=1:55 D+ o2 r$ }/ s: a
for j=1:5+ z3 f; h0 d" N. c& S: e# g: X$ A
A(i,j)=x(i).^(j-1);2 r$ y& h1 S( [1 Y1 J% b8 t
end4 L8 L! c7 u9 [5 j6 ?# |5 V8 q0 F
end4 [/ i" r* S) l$ i$ `% |
A6 h- B2 p3 W8 I+ c- ~
运行后显示正确答案。 7 s3 ] l H( R) g光是这样不错,但是书上又来了句:. X+ h+ T8 K, C7 }2 G0 \
“在实际MATLAB编程中,采用循环语句会降低其执行速度,应尽可能多地利用向量来设计程序。如上述程序可改写成以下更简明的形势:” ! a3 S2 N* c5 N& O( A0 K' c- S0 J6 T; Z! U) O" \
然后书上贴了一段代码: $ J# H B& ]- q( ~( tclear all; $ a a. y! J C0 T/ Hx=[-1,0,1,2,3]'; ; N2 p- R% o! w' ffor j=1:5 4 {8 n2 U. r" A% G" ]0 X" F6 y1 I! b A(i,j)=x(i).^(j-1);) Y! y5 n0 d' w) Q; B3 d
end5 k' f1 b2 ^7 `6 O/ k5 ?! q7 d
A * _9 |2 ~" n) i, ]' _书上对这段的解释是:( O, h0 C E# Q; i
“由于MATLAB支持向量运算,上述问题可以改用单循环来处理。”" R8 m/ b( ~9 p% O. O9 F. O4 \
% Z3 \; o8 n8 e, t, ~8 `; L* m但是后一段我运行后出错,显示第4行出错,报错:% H! G6 \/ K4 m! F) Y
Subscript indices must either be real positive integers or logicals.6 Q3 R4 R0 [5 {3 M% u# K |
是书上错了吗?如果是,那么,按照书上的那个意思,程序应该怎么改? 1 d. D2 q+ W2 l! c谢谢!