2013-09-27 117 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