我有两个矩阵A和B,我想对它们执行元素最大化。我刚刚编写了以下代码,这些代码效率很低,需要很长时间才能运行。
A = C;
for x = 1 : height
for y = 1 : width
if(A(x, y) < B(x, y))
A(x, y) = B(x, y);
end
end
end
我搜索了SO,并发现使用bsxfun
函数(1,2,3)回答了类似的问题。但我无法理解这一点。
这里也可以bsxfun
申请吗?
我想要的是A = max(B, C)
。
答案 0 :(得分:1)
bsxfun(@(x,y) x<y,A,B)
将返回A> B的索引。
所以:
A(bsxfun(@(x,y) x<y,A,B))=B(bsxfun(@(x,y) x<y,A,B));
应该做的伎俩。
但不需要使用bsxfun,你可以去:
A(A<B)=B(A<B);
或者只是使用评论中所述的max(羞辱我)