有人可以幫助我。 我使用Matlab程序。在向量中查找當地最大值
想,我有向量A,
A = [0 0 1 2 3 5 0 0 0 0 0 2 3 6 7 0 0 0 0 1 1 2 3 4 1]
我想從矢量A.因此,獲得極大值和位置,我想獲得是繼答案。
包括maxValue = 5,7和4;
maxLocation = 6,15和24;
感謝你們的盛情。
有人可以幫助我。 我使用Matlab程序。在向量中查找當地最大值
想,我有向量A,
A = [0 0 1 2 3 5 0 0 0 0 0 2 3 6 7 0 0 0 0 1 1 2 3 4 1]
我想從矢量A.因此,獲得極大值和位置,我想獲得是繼答案。
包括maxValue = 5,7和4;
maxLocation = 6,15和24;
感謝你們的盛情。
如果有信號處理工具箱然後findpeaks
應該是你想要什麼:
[pks,locs] = findpeaks(A)
因爲你應該知道,你要查找的是局部最大值將來參考。說你想找到最大值,看起來好像你想要全局最大值(在這種情況下將是7)。
您的回答對我很有幫助。謝謝 – 2013-03-21 13:23:43
你想找到4,5和7的每一個發生? 嘗試:
Output = find(A>3)
這將返回的任何位置的1×N個向量超過3 ... 不知道這是你想要的,雖然
發現(A> 3)不是我想要的答案。感謝您的幫助 – 2013-03-21 13:25:11
你需要遠你的目標更清晰。它看起來像你想在向量中找到局部最大值。
請問你總是有載體(不是真的陣列,通常是表示與兩個非單元尺寸的東西一個字)有你希望找到一個當地最大?你會選擇找到所有本地最大值?如果是這樣,那麼這將工作...
A = [0 0 1 2 3 5 0 0 0 0 0 4 5 6 7 0 0 0 0 1 1 2 3 4 1];
n = numel(A);
ind = 2:(n-1);
maxLoc = ind(find((diff(ind-1) > 0) & (diff(ind) < 0)));
% in case the max occurs at an end
if A(2) < A(1)
maxLoc = [1,maxLoc];
end
if A(n) < A(n-1)
maxLoc = [maxLoc,n];
end
maxVal = A(maxLoc);
約
A = [0 1 2 2 1 0];
那你現在想見到矢量
可是什麼?
同樣,你需要考慮你的要求。你有什麼需要。目標是什麼?
一旦你已經這樣做了,那麼你的問題就比較容易解決,更容易爲別人解答。
我假設你正在尋求局部最大值 - 也就是說,值大於他們周圍的值。
我的解決辦法是這樣的:
Loc = find(diff(A)(2:end)<0 & diff(A)(1:(end-1))>0)+1;
Val = A(Loc);
祿將包含本地最大值的位置,和Val將包含在這些局部極大值。請注意,它不會像寫入那樣在邊緣找到最大值。如果你想檢測這些,你必須稍微修改它:
Loc = find([A(1)>A(2),(diff(A)(2:end)<0 & diff(A)(1:(end-1))>0),A(end)>A(end-1)]);
Val = A(Loc);
呵呵?你如何得到5 7 4? – DarthVader 2013-03-21 13:08:50
我還不知道如何從數組A得到5 7 4。 但maxValue和maxLocation是我會得到它的答案。 – 2013-03-21 13:10:51
最大值是7?對?如果你是一個孩子,你有10個球,你會如何找到最大的? – DarthVader 2013-03-21 13:12:22