2015-01-08 180 views
5

我在Matlab中有2個數據集,我需要相互繪製 - 一個在x軸上,另一個在y軸上。每組的數據採用不同的方法收集,因此採樣率顯着不同,直到兩組中的數據點數不相同時,我無法將其與另一組數據進行比較。通過平均值在Matlab中對數據進行下采樣

它使用downsample函數Matlab在Matlab中下采樣數據非常簡單。

A = [-3 -1.5 0 1.5 3 4.5 6 7.5 9...] (goes on until 21) 
B = [-3.9 -3.8 -3.7 -3.6 -3.5 -3.5 -3.3 -3.2 -3.1 -3.0 -2.9 -2.8...] (goes on until 22) 

A的採樣率爲1.5s,B的採樣率爲0.1s。我已經能夠成功使用downsample作爲downsample(B,15,10)以使它在同一時間開始「-3s」(這意味着我的數據中有某些東西,因此我需要從這一點開始),並且採樣率爲1.5秒。

但是,現在我想知道是否有一種方法可以讓我取15分的平均值,而不是每15分拿一分? downsample,我用它的方式只是選擇第15個點。然而,我想讓它爲我平均15分。有沒有辦法做到這一點?

我爲一個簡單/較小的向量寫了一個for循環來看看我能否做到這一點。對於A = [1 2 3 4]我想濃縮數據,以便A只有2個條目,使它平均A(1)和A(2),然後A(3)和A(4)。

A = [1 2 3 4] 
for i = 1:3 
    P(i) = mean(A(i:i+1)) 
end 

但是,這並不像我想要的那樣工作,因爲我不希望它平均爲A(2)和A(3)。我想讓它取前兩項,取平均值,然後是下兩項,然後取平均值。等等。

任何人都可以幫忙嗎?

感謝

+0

稀釋是..對不起。 ..我確實嘗試尋找現有的答案,我認爲我的搜索詞與標題不同。 –

+1

是的,你解釋得非常詳細,爲什麼你想實現,你想實現什麼。可能的重複甚至不在相關主題中,我只記得它。別擔心,還是個好問題。 – Nras

回答

4

重塑你的數據An行×矩陣,其中n是平均尺寸,並應用mean來計算每列的平均值:

A = [1 2 3 4]; %// data 
n = 2; %// averaging size 
P = mean(reshape(A,n,[])); 
+0

謝謝,它的工作原理! –