我不知道是否有可能得到不同大小的子陣列的最小/最大值 而不使用matlab中的循環。matlab:不帶循環的不同大小的子陣列的總和值
% create a 1D vector with arbitory floating point values
A = rand(100,1,'double');
% get start indexes of sections of A (eg. A>0.9)
pos01 = A>0.9;
posIdx= [1;find(pos01);size(A,1)];
% if 1 or size(A,1) where not required, remove them
posIdx = unique(posIdx);
% min/max all sections:
for ix=1:size(posIdx,1)-1
Amin(ix) = min(A(posIdx(ix):posIdx(ix+1)));
Amax(ix) = max(A(posIdx(ix):posIdx(ix+1)));
end
如果你有一個非常大的向量A和很多節,這最後一行可能會很慢。 我不知道如何在matlab中對這個循環進行矢量化。
我試圖想出使用arrayfun,remap,bsxfun等的解決方案。 但所有我能想到的解決方案,需要的部分,以相等的大小 - 這是不是這樣的:(
任何想法
最好, 延亨裏克
你真的需要在最後/第一個元素中重疊的部分嗎? –
我可以避免重疊。準媽媽正在完成這項工作。大。 –