我有一個生成向量的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的值不是整數。
我有一個生成向量的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的值不是整數。
許多選項,例如:
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中使用循環或者它們運行效率非常低時。
非常感謝。 col = col + 1確實有效。我知道這是如此簡單.. –
@ Fl.pf。沒問題,雖然我認爲第一個是整潔的imo – Dan
是的,但那個問題。計算更復雜,然後我寫的例子:)也許我得到它運行,我會嘗試 –
將'r'預先分配爲'r = 1:dr:20;'。然後使用'for f = 1:lenght(r)'。這應該可以解決問題。 – Naveen