最大化matlab数组中的每个元素

信息处理 matlab 矩阵
2022-02-12 21:09:30

A是否可以在不循环的情况下构造一个数组,向量A(i,j) = max(B(i),C(j))哪里?BC

2个回答

bsxfun如果您的版本有,请尝试使用。

A = bsxfun(@max, B, C.')

根据他们的文档bsxfun动态扩展参数矩阵的维度,因此使用的内存不如repmat.

如果矩阵不是太大,repmat可以工作:

B = [2 3];
C = [0 1 2 3];
% Vectorize the vectors for a simplication
B = B(:);
C = C(:);

A = max(repmat(B,1,length(C)),repmat(C',length(B),1));

对于那些感兴趣的人,比较 BSXFUN 和 REPMATMatlab - bsxfun 不再比 repmat 快吗?解决其相对于 的相对效率repmat显然, bsxfun以前更快。与最近的 Matlab 版本相比,差异似乎更小。