我有一个与某些x,y值对应的nx2矩阵,我想要做的是用一些值替换1x2行的子集。目前我使用find()获取该子集。例如,如果我有以下矩阵:
k= [1 2
3 4
5 6
7 8
9 0]
我在其他一些相关的5x1数组上使用了find()来表示索引
indices = [1 3 5]
然后我想快速将k中的第1,3和5行更改为相同的预定行,例如[-2 -6]。结果就是......
k= [-2 -6
3 4
-2 -6
7 8
-2 -6]
我知道对于一个单独的行我可以做k(1,:) = [-2 -6]但是我似乎无法找到通常用于行列表的语法。 k(indices,:) = [-2 -6]不是有效的语法。当然,对于第1列和第2列这样做的两线解决方案,但我想有一个紧凑的方法来做到这一点。感谢。
答案 0 :(得分:1)
您需要确保要放入旧矩阵的矩阵的大小与要替换的元素的大小相同。在这种情况下,size(k(indices,:)) = [3 2]
。使用repmat
生成适当大小的矩阵,然后分配将成功。
replacement = [-2 -6];
k(indices,:) = repmat(replacement,length(indices),1)
k =
-2 -6
3 4
-2 -6
7 8
-2 -6
答案 1 :(得分:0)
您也可以使用一个索引重复该行:
row = [-2 -6];
k(indices,:) = row(ones(size(indices)),:);