Python 的 'reduce' 函数的 Matlab 等价物

Matlab equivalent of Python's 'reduce' function

我有一堆相同大小的矩阵 m*n:a, b, c, d,我想按元素找到它们的最大值,例如:

mx = max(a, max(b, max(c, d)));

显然上面的代码不够简洁,我用谷歌搜索并没有找到关于 max 在 N 矩阵上的帮助,或者任何像 python 的 [=15] 这样的 matlab 函数=].我对matlab了解不多,有吗?

为你的输入创建一个 n*m*4 矩阵,然后你可以使用 max:

M=cat(3,a,b,c,d)
max(M,[],3)

带参数 3cat 沿第三维连接矩阵,max 沿该维查找最大值。兼容任意矩阵维度:

d=ndims(a)
M=cat(d+1,a,b,c,d)
max(M,[],d+1)

Reduce 本身不存在,通常您不需要它,因为多维输入或 varargin 可以解决问题,但如果您需要它,它也很容易实现:

function r=reduce(f,varargin)
%example reduce(@max,2,3,4,5)
while numel(varargin)>1
    varargin{end-1}=f(varargin{end-1},varargin{end});
    varargin(end)=[];
end
r=varargin{1};
end