标题: <求助>新手自学问题 [打印本页] 作者: yazjy 时间: 2012-9-4 21:53 标题: <求助>新手自学问题 自学,一本教程上的一个例子: & H) [6 | b# _' }6 R编程输入范德蒙德型矩阵。8 ^% ?2 E* f; y
在MATLAB命令窗口输入以下代码: %%实际操作的时候,是输到M文件里面的 , d- H2 P I# P% n( f Uclear all; * ~2 W1 j% c$ o; D) gx=[-1,0,1,2,3]'; w3 H' W9 p A8 afor i=1:5 2 s' g5 H; p* Z! Z- ^ for j=1:5# d* J/ m, C3 L8 {( A
A(i,j)=x(i).^(j-1); - l( ]5 L% | l' I" G$ x2 d- Q end 7 C& c) v% H* M: S, F& S K5 jend 1 H4 m9 t1 w X# w: [A0 Q; S" ~3 A: [8 r) u6 f
运行后显示正确答案。' P4 ?$ ]8 l& K- S4 G
光是这样不错,但是书上又来了句:$ h. Q2 R1 A' i- v2 T ~
“在实际MATLAB编程中,采用循环语句会降低其执行速度,应尽可能多地利用向量来设计程序。如上述程序可改写成以下更简明的形势:” S9 N' D; T! H% t4 |$ G6 Z+ H* I+ }% r( w5 L0 T/ E2 Q6 Z/ P4 W
然后书上贴了一段代码: 2 B: }) y6 m( \+ Wclear all;1 E6 j. Q$ P% T* j9 U, ^" T
x=[-1,0,1,2,3]'; ' ?2 q$ ^2 v' k& Y% qfor j=1:52 d: K K7 C7 \) B" Q$ W
A(i,j)=x(i).^(j-1);+ P2 M5 {% [. V; B
end9 f/ b# @$ s2 W
A / d+ [5 G8 e6 h/ ~- g1 A- j书上对这段的解释是:9 H) e1 m; T. m/ b
“由于MATLAB支持向量运算,上述问题可以改用单循环来处理。”8 h4 j8 y% z, P9 Z# a; o
' b& t5 Z2 G3 j `但是后一段我运行后出错,显示第4行出错,报错:$ E' W6 u1 u8 V+ N
Subscript indices must either be real positive integers or logicals.$ ]0 _2 b% b+ b6 z" p
是书上错了吗?如果是,那么,按照书上的那个意思,程序应该怎么改? % f4 s ^; B! b: Q, c( v# E谢谢!作者: yazjy 时间: 2012-9-4 21:54
后一段第4行写错,书上的是:A(i,j)=x(i)^(j-1);