在MATLAB中,filter函數用于對信號進行數字濾波。它采用兩個參數,一個是濾波器的系數向量,另一個是待濾波的信號。
語法如下:
y = filter(b, a, x)
其中,b是濾波器的分子系數向量,a是濾波器的分母系數向量,x是待濾波的信號。
例如,對一個正弦波信號進行一個10階低通濾波器濾波,可以使用以下代碼:
fs = 1000; % 采樣頻率
t = 0:1/fs:1; % 時間序列
f = 50; % 正弦波頻率
x = sin(2*pi*f*t); % 正弦波信號
% 低通濾波器系數
fc = 100; % 截止頻率
[b, a] = butter(10, fc/(fs/2));
% 使用filter函數濾波
y = filter(b, a, x);
% 繪制結果
figure;
subplot(2, 1, 1);
plot(t, x);
title('原始信號');
subplot(2, 1, 2);
plot(t, y);
title('濾波后信號');
在以上代碼中,首先定義了一個正弦波信號,然后使用butter函數生成了一個10階低通濾波器的系數,最后使用filter函數對信號進行濾波,并繪制了原始信號和濾波后的信號。
請注意,濾波器系數b和a的長度應為相同且非零。