Matlab等同于Python'减少'功能

时间:2015-04-26 08:26:17

标签: python matlab reduce equivalent

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

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

显然上面的代码不够简洁,我已经google了,并没有找到关于N矩阵max或任何matlab函数(如python' s reduce的帮助。{{1 }}。我还没有学到很多关于matlab的知识,还有一个吗?

1 个答案:

答案 0 :(得分:3)

制作输入的n*m*4矩阵,然后您可以使用max

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

cat参数3连接第三维矩阵,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
相关问题