复制矩阵行matlab

时间:2014-12-05 13:43:11

标签: matlab matrix copy row

假设我的矩阵A为300x65。最后一列(第65列)包含有序值(1,2,3)。前102个元素为'1',后50个元素为'2',余数为'3'。

我有另一个矩阵B,它是3x65,我想用B矩阵A中的'1'复制B的第一行.B的第二行应该用矩阵A中'2'的数字复制并且第3行应该由矩阵A的剩余值复制。通过这样做,矩阵B应该产生300x65矩阵。

我试过使用matlab的repmat函数没有成功,有没有人知道怎么做?

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,就应该这样做

index = A(:,end);  % will be a column of numbers with values of 1, 2, or 3
newB = B(index,:); % B has 3 rows, which are copied as required by "index"

这会导致newBA的行数相同,并且与原始B的列数相同

答案 1 :(得分:0)

您的问题存在许多不一致之处

首先,如果您为A的每个元素复制1行B(最终将通过您的描述发生),这将导致矩阵19500x65

其次复制它的自我是一个含糊的术语,你的意思是重复吗?是否要将复制的值存储到新的var?

我从你的问题中收集到的是你想要在A和B之间进行一些操作来创建一个矩阵并将其存储在B中,如果你没有另外一个存储的变量,它本身就会导致进程变形结果

所以我建议使用第三个变量c来存储结果然后如果你需要它在b中设置b = C

对于你所描述的任何过程,我建议学习有效地使用'for'循环,因为它似乎是你需要使用的

循环

语法

for i = [start:increment:end]
     //loops for the length of [start:increment:end]
     //sets i to the nth element of [start:increment:end] where n is the number of times the loop has run
end