这组函数仅仅是四个内置的Matlab函数,重新包装为易用性(信号处理工具箱是必需的)。如果你不想去通过设计和实现一个过滤器的冗长与归一化频率等等每次过滤一个信号,这个包可能适合你。如果你是一个Matlab pro和数字信号处理方面的专家,你可能不会的印象。
每个函数的[filtered_signal、filtb filta] = bandstop_butterworth (inputsignal cutoff_freqs, Fs,顺序)
输入:
inputsignal =输入时间序列
cutoff_freqs =过滤器拐角频率(f1 f2)形式
Fs =数据采样频率
巴特沃斯滤波器的订单=订单
输出:
filtered_signal =过滤后的时间序列
filtb filta =筛选分子和分母(可选)
示例1:
负荷训练
t =(1:长度(y)) / Fs;
y_filt = bandstop_butterworth (y) (800 1000)、Fs、4);%切断800赫兹到1000赫兹
图
情节(t, y, b t y_filt,“r”)
包含(时间以秒为单位)
盒子了
传奇(“过滤”、“过滤”)
声音(y, Fs) %原始时间序列
暂停(2)%停顿两秒
声音(y_filt Fs) %过滤时间序列
示例2:
负荷训练
t =(1:长度(y)) / Fs;
[y_filt, filtb filta] = bandstop_butterworth (y) (800 1000), Fs, 4);%切断800赫兹到1000赫兹
(h1, f1) = freqz (filtb filta 256 Fs);
图
次要情节(1,1)
情节(t, y, b t y_filt,“r”)
包含(时间以秒为单位)
盒子了
文本(0,。1,“时间序列”,“单位”,“归一化”)
次要情节(1、2)
AX = plotyy (f1, 10 * log10 (abs (h1)), f1,角(h1),“semilogx”);
集(get (AX (1),“ylabel”),“字符串”,“获得(dB)”)
集(get (AX (2),“ylabel”),“字符串”,“阶段(rad)”)
xlim (AX(1),(最小(f1)最大(f1)))
xlim (AX(2),(最小(f1)最大(f1)))
文本(0,。1,“滤波器响应”,“单位”,“归一化”)
盒子了
[Pxx f] = pwelch (y, 512256年,[],Fs,单方面的);
[Pxxf, f_f] = pwelch (Fs y_filt, 512256年,[],“单向的”);
次要情节(3、1,3)
semilogx (f, 10 * log10 (Pxx))
抓住
semilogx (f_f 10 * log10 (Pxxf),“r”)
包含(频率(赫兹))
ylabel (PSD (dB))
xlim ([min (f1) max (f1)))
盒子了
传奇(“过滤”、“过滤”、“位置”,“西北”)
传说boxoff
引用作为
乍得格林(2023)。巴特沃斯滤波器(//www.tatmou.com/matlabcentral/fileexchange/38584-butterworth-filters), MATLAB中央文件交换。检索。