我有一堆相同大小的矩阵m * n:a, b, c, d
,我想在元素中找到它们的最大值,如:
mx = max(a, max(b, max(c, d)));
显然上面的代码不够简洁,我已经google了,并没有找到关于N矩阵max
或任何matlab函数(如python' s reduce
的帮助。{{1 }}。我还没有学到很多关于matlab的知识,还有一个吗?
答案 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