2016-05-23 74 views
0
A= [1 2 3 4 
    2 3 4 5 
    4 5 6 7 
    . 
    ....] 

其中每一行被存儲在單獨的載體作爲這樣如何使用循環將多個行向量組合成單行向量?

a1 = [1 2 3 4] 
a2 = [2 3 4 5] 
. 
. 
. 
an = [1 2 3 4] 

和我需要創建新的細胞,使用一個循環,包含所有先前的行向量如下:

vectors = {a1, a2, a3, ......,an} 

在工作空間中,我將vectors作爲1 x n單元,並在每個包含其自身矢量的單元格中;例如第一個單元格包含矢量a1,第二個單元格包含矢量a2等。我不想在每次有不同數量的矢量時複製代碼,所以我想自動執行此操作。

enter image description here

+5

你從哪裏得到'an'矢量來自哪裏?你在代碼中生成它們嗎?改變產生它們的代碼比在事實之後聚合它們更有意義。 – Dan

+0

歡迎來到矩陣 – GameOfThrows

+1

有人在第一時間編輯我的問題,因爲現在問題是無用的,因爲連接矩陣相當簡單。我需要,因爲我可以首先創建一個矢量陣列,每個矢量在他自己的單元格中,因爲我可以手動執行它。 – Emanuel

回答

3

你要不要用手副本在此之前的每一行成一個獨立的變量。您想要使用的for循環的正確方法是這樣

A = rand(15,39); 
vectors = cell(1,size(A,1)); % initialise output 

for ii = 1:size(A,1) % loop over all rows 
    vectors{1,ii} = A(ii,:); % store each row in the cell 
end 

要做到這一點沒有環(感謝@beaker

B = mat2cell(A, ones(1,size(A,1)), size(A,2)).'; 

雖然矩陣(所以你原來A)將是最佳的整體,因爲MATLAB在矩陣中工作得最好。