我正在使用Matlab 2012a。在數組中找到n個最小值
我有一個k個單元格的數組(例如1000)。我需要找到這個陣列的5個最低值,並且需要在X和Y上做這些值的平均值。
任何人都有一個想法如何做到這一點?
我正在使用Matlab 2012a。在數組中找到n個最小值
我有一個k個單元格的數組(例如1000)。我需要找到這個陣列的5個最低值,並且需要在X和Y上做這些值的平均值。
任何人都有一個想法如何做到這一點?
假設你有陣列的X和Y,並且要找到五個最低Y值:
[m mi] = sort(Y);
lowest5index = mi(1:5);
lowest5Y = Y(lowest5index);
lowest5X = X(lowest5index);
meanYlowest5 = mean(lowest5Y);
meanXlowest5 = mean(lowest5X);
說明:
的sort
命令具有兩個輸出參數同時返回排序後的數組(在m
)和原始數組中的索引(mi
)。前五個指數mi(1:5)
對應於五個最低值。將X和Y的這些值的mean
作爲我們想要的。如果我不明白你的問題陳述,請澄清你的問題,我會再試一次。
怎麼樣做一個sort
從最低值到最高值,然後選擇5個第一個值。這些將是你的數組的5分鐘值。然後執行這5個值的平均值。
這可能不是最有效的方法,但只有1000個值才能完成工作!
希望它有幫助!
使用minmaxselection
MATLAB MEX包,裏面有針對此問題專門優化:
a = [2,3,4,7,56,4,21, 64, -2];
mink(a, 2)
<< ans =
<< -2 2
mink(a,4)
<< ans =
<< -2 2 3 4
您對算法做這個問題?你使用什麼編程語言? – Alex 2013-02-08 14:36:53
我編輯,我的壞。我正在使用Matlab 2012a – Vissenbot 2013-02-08 14:57:37
你的數據的結構是什麼?你提到「陣列」和「細胞」和「X」和「Y」。假設你有數組X和Y,我創建了一個答案 - 但重新閱讀你的問題我並不確定你有什麼......你能澄清嗎? – Floris 2013-02-08 15:09:58