【发布时间】:2014-07-02 06:35:01
【问题描述】:
在 Octave 中,有这样的矩阵:
abc = [1 2 3; 5 7 8];
def = [5 7 9; 10 11 12];
我想要一个函数,对于 abc 中的所有 [x y z1]s,检查 def 中是否存在 [x y z2],如果存在,则替换它。
所以,我想要类似的东西
checkandreplace(abc, def);
将 abc 更改为 [1 2 3; 5 7 9]
编辑:
我能想到的最好的方法是循环方案:
for i = 1:size(abc, 1)
index = find(ismember(def(:, [1 2]), abc(i, [1 2]), 'rows'))
if(index)
abc(i, :) = def(index, :)
endif
endfor
可以做得更好吗?
编辑:
忘了补充它应该是稳定的,即它不应该改变 abc 中的行顺序。
感谢您的帮助!
【问题讨论】:
-
你的循环有什么问题?
-
没有错!我只是想知道是否可以使用矢量化。
标签: matlab matrix octave vectorization