
基于matlab的FFT频谱分析数字滤波器。 可进行谐波提取可实现对仿真模型中示波器的波形数据或者外部采样数据进行频谱分析和自定义频段清除也可以对已有数据特定频段的数据进行提取。 滤波前后波形无相位滞后幅值无衰减。 图a是原始信号含三次五次谐波图b是原始信号频谱分析(FFT)结果图c是滤除三次和五次谐波信号后的对比结果图d是滤波后波形频谱分析FFT分析结果。先看原始信号图a这哥们儿混着50Hz基波、150Hz三次谐波和250Hz五次谐波。上频谱分析Fs 1000; % 采样率别抠门至少2倍最高频率 N length(signal); Y fft(signal)/N*2; % 别忘幅度修正 freq (0:N/2)*Fs/N; % 频率轴别搞错 plot(freq, abs(Y(1:N/21))) % 图b就是这么来的这段代码的玄机在幅度修正——FFT结果要除以N再乘2直流分量除外。频率轴计算时注意奈奎斯特频率别把镜像频谱当正主儿。发现三次和五次谐波后该出必杀技了。传统IIR滤波器会有相位失真咱们用零相位滤波[b,a] butter(4, [140 160]/500, stop); % 4阶带阻搞掉150Hz filtered filtfilt(b,a,signal); % 双向滤波神器butter函数第4个参数是关键[140 160]/500把150Hz包饺子。filtfilt双向滤波消除相位滞后实测波形对比图c滤波前后完美重合没有时移。基于matlab的FFT频谱分析数字滤波器。 可进行谐波提取可实现对仿真模型中示波器的波形数据或者外部采样数据进行频谱分析和自定义频段清除也可以对已有数据特定频段的数据进行提取。 滤波前后波形无相位滞后幅值无衰减。 图a是原始信号含三次五次谐波图b是原始信号频谱分析(FFT)结果图c是滤除三次和五次谐波信号后的对比结果图d是滤波后波形频谱分析FFT分析结果。验证滤波效果图d再来波FFTY_filtered fft(filtered)/N*2; hold on plot(freq, abs(Y_filtered(1:N/21)), r) % 红色频谱对比三次五次谐波幅度归零基波纹丝不动。注意滤波器阶数别贪高4阶够用阶数越高计算量越大还可能震荡。遇到需要提取特定谐波时把带阻换成带通[b,a] butter(4, [240 260]/500, pass); % 提取250Hz分量 harmonic5 filtfilt(b,a,signal);实战中发现个坑信号首尾容易出现畸变处理时最好先做数据镜像扩展。想要更陡峭的过渡带试试cheby2滤波器但要注意通带波纹控制。最后提醒别迷信默认参数实际采样时加个汉宁窗更稳当。滤波器设计完必须用freqz函数验货确认幅频特性达标再投入实战。数字滤波就像精准手术刀过无痕才是真本事。