2
我有兩個不同長度的數組(由於不同的採樣率),我需要比較。我想縮小較大的數組以適應長度較小的數組,但該因子不是整數而是小數。MATLAB:比較2個不同長度的數組
舉一個例子:
a =
1 1.375 1.75 2.125 2.5 2.875 3.25
b =
1 2 3
有什麼辦法來處理這些陣列相匹配的長度?
我有兩個不同長度的數組(由於不同的採樣率),我需要比較。我想縮小較大的數組以適應長度較小的數組,但該因子不是整數而是小數。MATLAB:比較2個不同長度的數組
舉一個例子:
a =
1 1.375 1.75 2.125 2.5 2.875 3.25
b =
1 2 3
有什麼辦法來處理這些陣列相匹配的長度?
巧妙地使用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
完美。非常感謝** rayryeng **。 – Bensa
完全沒問題。祝你好運! – rayryeng