Matlab bsxfun替代导致错误结果



我必须在不支持bsxfun的旧版本上运行Matlab代码,并且需要编写

的等效表达式
matx = bsxfun(@rdivide, matx, reshape(f, 1, 1, length(f)));

我已经试过了

matx=matx./ones(size(reshape(f, 1, 1, length(f)),1));

但是我得到了错误的结果

matx尺寸为246x301x81在使用bsxfun

的指令调用之前,f的大小是1x81。

由于matx是一个3D数组,f是一个长度等于matxdim-3中的元素数的行向量,您可以使用repmat执行bsxfun等效的扩展/复制,然后执行按元素除法,如下-

% Get size of matx
[m1,n1,r1] = size(matx);
%// Replicate f to the size of matx and perform elementwise division
matx = matx./repmat(permute(f,[1 3 2]),[m1 n1 1])

相关内容

  • 没有找到相关文章

最新更新