簡體   English   中英

Matlab相當於Python的'reduce'函數

[英]Matlab equivalent of Python's 'reduce' function

我有一堆大小為m * n的矩陣: a, b, c, d ,我想按元素查找它們的最大值,例如:

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

顯然,上面的代碼不夠簡潔,我已經在Google上搜索過,並且沒有找到關於N個矩陣上的max或任何類似python reduce 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM