2014-11-06 31 views
-1

我試圖在20個向量中創建一個20 x 2000的數組,每個數組長度爲2000個元素。我會如何去做這件事?從行向量創建更大的數組

具體地,如果我的行矢量的形式爲vector_1vector_2,... vector_N的,是有所有這些行向量合併成一個更大的N×2000個陣列,可能使用sprintf的一個簡單的方法?

+0

查找級聯; http://www.mathworks.com/help/matlab/ref/cat.html?searchHighlight=cat – 2014-11-06 16:29:39

+0

'cat(1,array1,array2 ...)'應該這樣做。 – Divakar 2014-11-06 16:30:29

+0

謝謝!我是否能夠通過參數中的數組循環遍歷貓,如果說我正在處理100個向量而不是20個向量? – Greg 2014-11-06 16:35:31

回答

1

如果您希望通過編程訪問的變量,以避免harcoding你可以做這樣的:

vect=[]; 
for ii=1:N 
    vect=eval(strcat('cat(1,vect, vect_',num2str(ii) ,')')); 
end 

這應該在形式cat(1,vect,vect_1)cat(1,vect,vect_2)cat(1,vect,vect_3)創建的字符串...然後評估他們。

我希望這是你想要的。

+1

創建一個矩陣我通常不會使用'eval'對答案進行投票,但是在這裏我沒有看到任何其他選擇......特別是在OP有多個命名向量的情況下。 ..所以+1! – rayryeng 2014-11-06 16:59:35

+0

@rayryeng其definetly函數我避免使用,但很好,有時你只需要我猜 – 2014-11-06 23:06:01

1

如果你的變量是在風格Vector_x所有命名,並要包含所有這類變量,你可以使用:

vectors = who('-regexp','vector_\d+'); 
A = zeros(length(vectors),numel(eval(vectors{1}))); 

for i = 1:numel(vectors) 
    A(i,:) = eval(vectors{i}); 
end 
+0

很好用'who'。 +1。 – rayryeng 2014-11-06 17:00:06