2016-10-13 134 views
1

我的數據位於名爲x的nxm數組中。我想要做的是計算每個列上某個閾值以上的值的平均值。所以輸出應該是1xm的矢量。 (x)顯然沒有指定閾值就這樣做。 mean(x>70)執行真相檢查和基本返回上述各列的閾值的百分比計算每個列的平均值超過特定閾值

你可以定義一個新的變量,例如

y = x > 70 

然後

mean(x(y)) 

但這種回報x的所有列的平均值。

有一個非常繁瑣的方法來做到這一點,每行有一行代碼。

mean(x(y(1:end,1))) 

等等,但這顯然是醜陋的。

我覺得我在這裏錯過了一些簡單的東西。希望有人能夠幫助。

+0

乘以掩碼爲每列相同的門檻? –

+0

是的,它是相同的 – Euphoria66

+0

然後在下面的解決方案中,只需將'threshold'設置爲標量;即'閾值= 70' –

回答

0

你忘了,你可以通過逐元素

threshold = []; %define threshold here; it can be a 1xm vector or a scalar. 
output = sum(x.*(x>threshold))./sum(x>threshold); 
+0

首先,感謝您的答案。 – Euphoria66

+0

儘管如此,x中所有低於閾值的元素都會變爲0,這反過來會嚴重影響平均值。所以,在這種情況下,這不是一個好的選擇。 – Euphoria66

+0

done = down ... – Euphoria66