自学,一本教程上的一个例子: 5 |; B5 |, ^. Y0 M编程输入范德蒙德型矩阵。 ' K3 f- n5 G+ a- {! H在MATLAB命令窗口输入以下代码: %%实际操作的时候,是输到M文件里面的1 J$ J, N# O) D8 S5 a
clear all; , h( ^+ i" Z+ p8 g2 Z5 L; g6 wx=[-1,0,1,2,3]';. Q# G( P9 E5 ]8 @
for i=1:5; s$ l; G$ V* Y& P0 x
for j=1:53 P6 n! e; k. u2 L# [. b z7 @% ^
A(i,j)=x(i).^(j-1); 9 j% _; S, d( P( _( G" D& B) y end 9 p1 l/ T2 z3 A% |end ' q6 f. x- }/ u g2 `A6 y( a$ N" j# i! v* T
运行后显示正确答案。0 ]6 Q6 _5 j% r( ?# L
光是这样不错,但是书上又来了句:; v$ i6 j+ l; l$ X( c/ d: t: u p
“在实际MATLAB编程中,采用循环语句会降低其执行速度,应尽可能多地利用向量来设计程序。如上述程序可改写成以下更简明的形势:” 5 H2 q2 q: w4 K2 s2 P0 J: Y" U+ u6 h
然后书上贴了一段代码:4 _0 W7 g: h( \: P3 H: d3 Z: e' T
clear all;5 }8 ?. i1 W6 v) l" A/ f+ C
x=[-1,0,1,2,3]';$ z) T. [& ]) m1 Y" v: e& e( z( o
for j=1:5 4 R5 j3 m' s% e! i& B A(i,j)=x(i).^(j-1); ! C, W" p# w9 x; Gend/ t g' |4 s1 K- Q
A9 c# {$ d9 m# m; K, I6 l) ]) I# q- ]7 b
书上对这段的解释是: % O) b0 T+ B6 L2 |“由于MATLAB支持向量运算,上述问题可以改用单循环来处理。”- b# |% U; U2 u. V
% t: T7 A. Q2 m" ]3 E; E但是后一段我运行后出错,显示第4行出错,报错: # d& u2 i& v) l0 }3 pSubscript indices must either be real positive integers or logicals.! z. L7 G: b- [2 G2 l. _, g
是书上错了吗?如果是,那么,按照书上的那个意思,程序应该怎么改?5 X2 x# ]! v& I2 t& y! C4 D3 V
谢谢!