2010-07-07 101 views
-2

可能重複:
Matlab - building an array while looping
Matrix of unknown length in MATLAB?從for循環產生的價值構建在MATLAB矩陣

你怎麼把所有的 「a」 的價值觀,共同形成向量?

for i=1:3 
    a=2+i 
end 

而且這也許是一個風格問題,但是當你把一個分號結束後,在for循環中,如上面的一個,也是它正確的把一個分號第一行之後?

+0

我想這只是一個簡單的例子,你實際上更多的是你的for循環。如果不是的話,你可以將所有東西向量化爲一行:'a = 2 +(1:3);' – groovingandi 2010-07-07 09:59:15

+0

Duplicate:http://stackoverflow.com/questions/2480933/matlab-building-an-array-while-循環,http://stackoverflow.com/questions/1548116/matrix-of-unknown-length-in-matlab – gnovice 2010-07-07 13:37:23

回答

0

您需要索引a,像這樣:

for ii=1:3 
    a(ii) = 2+ii; 
end 

我更喜歡使用ii作爲循環變量,以避免衝突MATLAB的內置i。你也應該,如果你知道的大小循環開始前預分配a,像這樣:

N = 100; 
a = zeros(1,N); 
for ii=1:N 
    a(ii) = 2 + ii; 
end 

就個人而言,我從來沒有把任何標點的for ii=1:3部分之後,寫出了一個班輪FOR循環時除外,像這樣:

for ii=1:N, a(ii) = 2 + ii; end 
0

請注意,您可以更有效地構建該如此:

a=1:3; 
a=a+2; 

第一線將第一行a作爲向量(1,2,3),第二行將2添加到每個元素。

「效率」在這樣一個小矢量中並不重要,但是如果你習慣於更像這樣思考的話,通常你會得到更好的matlab里程。