假设我的矩阵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函数没有成功,有没有人知道怎么做?
答案 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"
这会导致newB
与A
的行数相同,并且与原始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