2014-07-22 98 views
0

我有一個生成向量的for循環。我想將這些向量存儲在矩陣中。 通常我會做:如何存儲for循環matlab中的一系列向量

for r=1:100 

    vec=[x:y]+r; 

    mat(:,r)=vec 

end 

但這並不工作,因爲我有這樣的:

dr=10/20 

for r=1:dr:20 

    vec=[x;y]+r; 

    ... 

我怎麼會向量現在存儲在一個矩陣?因爲我不能使用r作爲列索引,因爲大多數情況下r的值不是整數。

+1

將'r'預先分配爲'r = 1:dr:20;'。然後使用'for f = 1:lenght(r)'。這應該可以解決問題。 – Naveen

回答

0

許多選項,例如:

r=1:dr:20 
for rr=1:length(r) 

    vec=[x;y]+r(rr); 
    mat(:,rr)=vec; 
... 

col = 1; 
for r=1:dr:20 

    vec=[x;y]+r; 
    mat(:,col)=vec; 
    col = col + 1; 
    .... 

但無論你選擇,你必須之前預先分配mat你對這樣的循環:

mat = zeros(length(x) + length(y), length(1:dr:20)) 

預分配是必不可少的當在Matlab中使用循環或者它們運行效率非常低時。

+0

非常感謝。 col = col + 1確實有效。我知道這是如此簡單.. –

+0

@ Fl.pf。沒問題,雖然我認爲第一個是整潔的imo – Dan

+0

是的,但那個問題。計算更復雜,然後我寫的例子:)也許我得到它運行,我會嘗試 –