自学,一本教程上的一个例子: 3 ]4 F x/ V0 |" p" @% ~9 f编程输入范德蒙德型矩阵。 $ [' g9 ^& A \! b0 U在MATLAB命令窗口输入以下代码: %%实际操作的时候,是输到M文件里面的, r+ Q- ~* a: W2 x. G" ?. o
clear all; , A% |. q# f. e% N$ Y+ \2 Nx=[-1,0,1,2,3]';1 P/ Y5 H1 ~) i) X' }* \ }. y* n
for i=1:54 D" { l6 s" m5 |. D
for j=1:5" t& j1 {4 h+ Q+ y+ |3 c' R, k4 T
A(i,j)=x(i).^(j-1); - r( A2 }3 k4 a: A+ O3 Z( ?( V end : ]/ {6 E4 z6 U. jend - ]$ t9 G( K, s q& qA+ F& x4 j7 Z/ d1 ~ \3 q5 v# h
运行后显示正确答案。9 |% `4 D3 P# Q: `, \ ~$ ?
光是这样不错,但是书上又来了句:# J! ?! H/ E a% f7 V
“在实际MATLAB编程中,采用循环语句会降低其执行速度,应尽可能多地利用向量来设计程序。如上述程序可改写成以下更简明的形势:”/ J, G; N7 o( n A% a, n
% q8 i; M3 t. A' ~6 p9 h. r! s$ X
然后书上贴了一段代码:' c# q9 o4 R) u' t' y* V; ]
clear all;) t! _( e) W; k5 K7 |0 `
x=[-1,0,1,2,3]'; ' F8 v' U* [8 v; ]; Afor j=1:5$ X: I# _ \* d0 X4 l6 ?! G
A(i,j)=x(i).^(j-1); : o3 p0 u! V; \4 fend # h5 X3 _4 f5 v7 D% | `A }& v4 F2 @4 C- e% K
书上对这段的解释是: 5 l6 o/ Z8 I4 h. y+ g“由于MATLAB支持向量运算,上述问题可以改用单循环来处理。”3 N& j9 n4 N. w5 v5 `" r, I1 l
5 H$ M' {9 a$ O6 l0 I* D& k8 p但是后一段我运行后出错,显示第4行出错,报错: . K; |# B8 c% q- dSubscript indices must either be real positive integers or logicals.+ N5 Q. y0 [# S- B' l/ e
是书上错了吗?如果是,那么,按照书上的那个意思,程序应该怎么改?' q1 _- h) J0 }0 J. g
谢谢!