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)
带参数 3
的 cat
沿第三维连接矩阵,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
我有一堆相同大小的矩阵 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)
带参数 3
的 cat
沿第三维连接矩阵,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