2013-09-27 115 views
1

我想要使用加載文本文件的數據製作矩陣矢量。我正在使用cat通過加載數據「MATLAB」創建矩陣矩陣

n : number of matrices. 
p : number of columns of matrices. 

每個矩陣都有4行。 例如我在一個文本文件中有1200個數字,而p是3,所以n=100。 怎麼做到的?!

這就是我試圖做的:

X = cat(n,[1...p; ; ; ],...,[ ; ; ; ]); 
+1

這是不夠的信息,請描述相關的變量和文件的樣子,當你嘗試你的解決方案時會發生什麼。 –

+0

'cat'中的第一個參數是要連接的維度,而不是要連接的元素數量。在你的情況下,第一個參數可能是1,2或3,這取決於你想要達到什麼。 –

+0

我在一個txt文件的一列中有數字1 ... n(1200)。我想將這些數據導入到4 * 3矩陣或其他維度的向量中...... –

回答

0

的描述是有點模糊,但這裏是我會建議:

  1. 閱讀所有的數據到MATLAB(好像你知道如何做到這一點)
  2. 把所有東西放在一個大的矩陣或向量中
  3. 只有把所有東西放在一起後,才能使用reshape命令

在你的情況,你可能需要爲第3步做這樣的事情:

raw = rand(1200,1); %Assuming your data looks something like this 
X = reshape(raw,[],4,3); 

對於1200這個值會給你一個答案100x4x3。只要確保它是4x3的好倍數,如果你像這樣應用重塑。

更新

顯然,這是提問者一直在尋找的變化,一個4x3x100矩陣:

X =reshape(r,4,3,100) 
+0

感謝您的回答,但它會生成三個1200 * 4矩陣?! –

+0

r = 1 +(2-1)。* rand(1200,1);現在我想把這個數字放在一個4 * 3 ... X =貓(100,...),並申請例如:X(3,:,56) –

+0

@AlekMorfy如果我做'r = 1 +( 2-1)* rand(1200,1);'檢查'size(reshape(r,[],4,3))'很好地給了我100x4x3。這意味着你可以通過'X(3,:,56)'來訪問它。利用'reshape'的輸入來獲得你想要的東西。 ---可能是'重塑(r,100,4,3)'或'重塑(r,100,3,4)' –

0

如果你知道矩陣(n)的數量,可以將其存儲到單元陣列,這樣

myCellArray = cell(n,1); 
for it = 1:n 
    myCellArray{it} = (...) %Load matrix whatever how you do it (Load, fread,...) 
end 

或者僅僅通過使用動態分配的,但並沒有真正有效的,

myArray = []; 
myArray = [myArray newLoadArray]; 
+1

單元陣列主要是爲不規則大小的數據而設計的。由於這裏一切都很好4x3(或其他一些常規大小),這感覺就像是不使用矩陣的浪費。 –

+0

經過另一次閱讀,我明白他更多的問題。你說得對,單元陣列不是他所需要的。 – Vuwox