lowpass
:对信号进行低通滤波
y = lowpass(x,wpass)
y = lowpass(x,fpass,fs)
y = lowpass(xt,fpass)
y = lowpass(___,Name,Value)
[y,d] = lowpass(___)
lowpass(___)
y = lowpass(x,wpass)
使用低通滤波器对输入信号 x
进行滤波,低通滤波器的归一化通带频率 wpass
以 π \pi π rad / sample 为单位。lowpass
使用阻带衰减为 60 dB 的最小阶滤波器,并补偿滤波器引入的延迟。 如果 x
是矩阵,该函数将对每一列分别进行滤波。
y = lowpass(x,fpass,fs)
指定 x
已经以 fs
赫兹的速率采样。fpass
是滤波器的通带频率,以赫兹为单位。举例
y = lowpass(xt,fpass)
使用带通频率为 fpass
赫兹的滤波器对时间表 xt
中的数据进行低通滤波。该函数对时间表中的所有变量以及每个变量内的所有列分别进行滤波。
y = lowpass(___,Name,Value)
使用名称-值对参数为上述任何语法指定附加选项。您可以更改阻带衰减,过渡带陡峭程度以及滤波器的脉冲响应类型。举例
[y,d] = lowpass(___)
还返回用于对输入进行滤波的 digitalFilter
对象 d
。举例
lowpass(___)
没有输出参数,将在一张图上同时绘制输入信号和滤波后的信号。
创建一个以 1 kHz 采样 1 秒钟的信号。 该信号包含两个音调,一个音调为 50 Hz,另一个音调为 250 Hz,并将方差为 1/100 的高斯白噪声加入其中。 高频音调的幅度是低频音调的两倍。
fs = 1e3;
t = 0:1/fs:1;
x = [1 2]*sin(2*pi*[50 250]'.*t) + randn(size(t))/10;
对信号进行低通滤波以消除高频音调。指定通带频率为 150 Hz。显示原始和滤波后的信号,以及它们的频谱。
lowpass(x,150,fs)
实现基本的数字音乐合成器,并使用它来播放传统歌曲。指定采样率为 2 kHz。 绘制歌曲的频谱图。
fs = 2e3;
t = 0:1/fs:0.3-1/fs;
l = [0 130.81 146.83 164.81 174.61 196.00 220 246.94];
m = [0 261.63 293.66 329.63 349.23 392.00 440 493.88];
h = [0 523.25 587.33 659.25 698.46 783.99 880 987.77];
note = @(f,g) [1 1 1]*sin(2*pi*[l(g) m(g) h(f)]'.*t);
mel = [3 2 1 2 3 3 3 0 2 2 2 0 3 5 5 0 3 2 1 2 3 3 3 3 2 2 3 2 1]+1;
acc = [3 0 5 0 3 0 3 3 2 0 2 2 3 0 5 5 3 0 5 0 3 3 3 0 2 2 3 0 1]+1;
song = [];
for kj = 1:length(mel)
song = [song note(mel(kj),acc(kj)) zeros(1,0.01*fs)];
end
song = song/(max(abs(song))+0.1);
% To hear, type sound(song,fs)
pspectrum(song,fs,'spectrogram','TimeResolution',0.31, ...
'OverlapPercent',0,'MinThreshold',-60)
对信号进行低通滤波,将旋律与伴奏区分开。指定通带频率为 450 Hz。在时域和频域中绘制原始信号和滤波后的信号。
long = lowpass(song,450,fs);
% To hear, type sound(long,fs)
lowpass(song,450,fs)
figure
pspectrum(long,fs,'spectrogram','TimeResolution',0.31, ...
'OverlapPercent',0,'MinThreshold',-60)
使用具有 200 Hz 通带频率的 IIR 低通滤波器,对采样率为 1 kHz 的白噪声进行滤波。使用不同的陡度值。绘制滤波信号的频谱。
fs = 1000;
x = randn(20000,1);
[y1,d1] = lowpass(x,200,fs,'ImpulseResponse','iir','Steepness',0.5);
[y2,d2] = lowpass(x,200,fs,'ImpulseResponse','iir','Steepness',0.8);
[y3,d3] = lowpass(x,200,fs,'ImpulseResponse','iir','Steepness',0.95);
pspectrum([y1 y2 y3],fs)
legend('Steepness = 0.5','Steepness = 0.8','Steepness = 0.95')
[h1,f] = freqz(d1,1024,fs);
[h2,~] = freqz(d2,1024,fs);
[h3,~] = freqz(d3,1024,fs);
plot(f,mag2db(abs([h1 h2 h3])))
legend('Steepness = 0.5','Steepness = 0.8','Steepness = 0.95')
x
- 输入信号输入信号,指定为矢量或矩阵。
举例:sin(2*pi*(0:127)/16)+randn(1,128)/100
指定一个混有噪声的正弦信号
举例:[2 1].*sin(2*pi*(0:127)'./[16 64])
指定一个两通道的正弦信号。
数据类型:single
| double
复数支持:是
wpass
- 归一化通带频率归一化的通带频率,指定为标量,应在区间 (0,1) 内。
fpass
- 通带频率通带频率,指定为标量,应在区间 (0,fs
/2) 内。
fs
- 采样率采样率,指定为正实标量。
xt
- 输入时间表输入时间表。xt
必须包含以秒为单位,类型为 duration
的递增、有限、等距的行时间。
如果时间表有缺少或重复的时间点,则可以使用《清除含有缺失、重复或不均匀时间的时间表(MATLAB)》中的提示进行修复。
举例:timetable(seconds(0:4)',randn(5,1),randn(5,2))
指定一个以 1 Hz 采样 4 秒的单通道随机信号和一个两通道随机信号。
指定可选的逗号分隔的 Name,Value
参数对。Name
是参数名称,Value
是相应的值。Name
必须出现在引号中。您可以按任意顺序指定多个名称和值对参数,例如 Name1,Value1,…NameN,ValueN
。
举例:'ImpulseResponse','iir','StopbandAttenuation',30
使用最小阶 IIR 滤波器对输入信号进行滤波,该滤波器将高于 fpass
的频率衰减 30 dB。
'ImpulseResponse'
- 脉冲响应的类型滤波器的脉冲响应类型,指定为以逗号分隔的,由 'ImpulseResponse'
和 'fir'
、'iir'
或 'auto'
(默认为 'auto'
) 组成的一对参数。
'fir'
- 该函数设计一个最小阶线性相位的有限冲激响应(FIR)滤波器。 为了补偿延迟,该函数将 N / 2 N / 2 N/2 个零附加到输入信号,其中 N N N 是滤波器阶数。 然后,该函数对信号进行滤波并删除输出的前 N / 2 N / 2 N/2 个样本。
在这种情况下,输入信号的长度必须至少是符合规格的滤波器的两倍。
'iir'
- 该函数设计一个最小阶无限冲激响应(IIR)滤波器,并使用 filtfilt
函数执行零相滤波并补偿滤波器延迟。
如果信号的长度不小于符合规格的滤波器的三倍,则此功能将设计一个阶数较小的滤波器,从而使陡度较小。
'auto'
- 如果输入信号足够长,则该函数设计一个最小阶 FIR 滤波器,否则设计一个最小阶 IIR 滤波器。 具体来说,该函数遵循以下步骤:
'Steepness'
- 过渡带陡峭程度过渡带陡度,指定为以逗号分隔的,由 'Steepness'
和在区间 [0.5,1) 的一个标量(默认为 0.85)组成的一对参数。
随着陡度的增加,滤波器响应接近理想的低通响应,但是最终的滤波器长度和滤波操作的计算成本也会增加。有关更多信息,请参见低通滤波器的陡度。
'StopbandAttenuation'
- 滤波器阻带衰减滤波器阻带衰减,指定为以逗号分隔的,包括 'StopbandAttenuation'
和 一个单位为 dB 的正标量(默认为 60dB)组成的一对参数。
y
- 滤波后的信号滤波后的信号,以向量,矩阵或时间表的形式返回,其维度与输入信号的维度相同。
d
- 低通滤波器滤波操作中使用的低通滤波器,以 digitalFilter
的形式返回。
filter(d,x)
使用 d
过滤信号 x
。designfilt
根据频率响应规范来编辑或生成数字滤波器。参数 'Steepness'
控制滤波器过渡带的宽度。陡度越低,过渡带越宽。陡度越高,过渡带越窄。
要理解滤波器的陡度,请参考以下定义:
奈奎斯特频率 f N y q u i s t f_{\mathrm{Nyquist}} fNyquist 是信号的最高频率分量,以此为参考就可以以给定速率采样而不会发生混叠。当输入信号没有时间信息时, f N y q u i s t f_{\mathrm{Nyquist}} fNyquist 为 1( × π \times\pi ×π rad / sample),当输入信号为时间表或指定采样率时, f N y q u i s t f_{\mathrm{Nyquist}} fNyquist 为 fs
/2 Hz。
滤波器的阻带频率 f s t o p f_{\mathrm{stop}} fstop,超过该频率后滤波器的衰减等于或大于使用 'StopbandAttenuation'
指定的值。
滤波器的过渡带宽 W W W 为 f s t o p − f_{\mathrm{stop}} - fstop− fpass
。
大多数非理想滤波器也会使通带上的输入信号衰减。这种与频率有关的衰减的最大值称为通带纹波。用函数 lowpass
产生每个滤波器的通带纹波均为 0.1 dB。
当指定 s s s 为 'Steepness'
时,该函数如下计算过渡带宽
W = ( 1 − s ) × ( f N y q u i s t − W=(1-s)\times (f_{\mathrm{Nyquist}} - W=(1−s)×(fNyquist− fpass
) ) )
'Steepness'
等于 0.5,过渡带宽即为 ( f s t o p − (f_{\mathrm{stop}} - (fstop− fpass
) ) ) 的 50%'Steepness'
接近于 1,过渡带宽逐渐变窄,直到达到 ( f s t o p − (f_{\mathrm{stop}} - (fstop− fpass
) ) ) 的 1%(此时为最小值)。'Steepness'
的默认值为 0.85,对应过渡带宽为 ( f s t o p − (f_{\mathrm{stop}} - (fstop− fpass
) ) ) 的 15%Signal Analyzer
bandpass
| bandstop
| designfilt
| filter
| filtfilt
| fir1
| highpass
在 R2018a 中推出
原文参考:https://ww2.mathworks.cn/help/signal/ref/lowpass.html