[英]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)
參數為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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.