2016-07-29 343 views
2

我有兩個不同長度的數組(由於不同的採樣率),我需要比較。我想縮小較大的數組以適應長度較小的數組,但該因子不是整數而是小數。MATLAB:比較2個不同長度的數組

舉一個例子:

a = 
    1  1.375  1.75  2.125  2.5  2.875  3.25 

b = 
    1  2  3 

有什麼辦法來處理這些陣列相匹配的長度?

回答

2

巧妙地使用interp1很容易。關鍵是用於插值的關鍵點是一個從1到最大值的數組,其值爲a,我們將其稱爲N,插值關鍵點將是線性增加的數組,其中第一個點爲1,最後一個點爲1點數爲N,並且您均勻分配此範圍以獲得與b中的點數相同的點數。

簡單地說:

anew = interp1(1:numel(a), a, linspace(1, N, numel(b))); 

linspace產生從1到N = numel(a)只要你想一個線性增加陣列點多,我們決定在b元素的總數。這正確地指定了您想給您的a的縮減採樣版本的正確關鍵點,該版本的長度與b的長度相匹配,但需要一些內插。默認的插值方法是線性的。

使用從a您提供的樣本輸入,我們得到:

>> anew 

anew = 

    1.0000 2.1250 3.2500 
+0

完美。非常感謝** rayryeng **。 – Bensa

+0

完全沒問題。祝你好運! – rayryeng