这是机器翻译
鼠标悬停在文本上查看原文。点击下面的按钮,返回该页面的英文版本。噪声正弦波信号滤波帧的MATLAB实现
这个例子展示了如何在MATLAB中对一个噪声信号进行低通滤波,并使用频谱分析仪将原始信号和滤波后的信号可视化。有关此示例的金宝appSimulink版本,请参见Simulink中噪声正弦波信号的滤波帧金宝app
指定信号源
输入信号是两个频率为1khz和10khz的正弦波的和。采样频率为44.1 kHz。
Sine1 = dsp。SineWave (“频率”1 e3,“SampleRate”44.1 e3);Sine2 = dsp。SineWave (“频率”, 10 e3,“SampleRate”44.1 e3);
创建低通过滤器
低通FIR滤波器,dsp。LowpassFilter
,利用广义Remez FIR滤波器设计算法设计了一种最小阶FIR低通滤波器。设置通频带频率为5000hz,阻频带频率为8000hz。通带纹波为0.1 dB,阻带衰减为80 dB。
FIRLowPass = dsp。LowpassFilter (“PassbandFrequency”, 5000,...“StopbandFrequency”, 8000);
创建频谱分析仪
设置频谱分析仪,比较原始信号和滤波信号的功率谱。频谱单位为dBm。
SpecAna = dsp。简介(“PlotAsTwoSidedSpectrum”假的,...“SampleRate”, Sine1。SampleRate,...“NumInputPorts”2,...“ShowLegend”,真的,...“YLimits”, -145年,45);SpecAna。ChannelNames = {“原始噪声信号”,低通滤波信号};
为每帧指定样本
本例使用基于帧的处理,其中数据一次处理一帧。每一帧数据包含来自独立通道的连续样本。基于帧的处理对于许多信号处理应用是有利的,因为您可以一次处理多个样本。通过将数据缓冲到帧中并处理数据的多采样帧,您可以提高信号处理算法的计算时间。设置每帧样本的数量为4000。
Sine1。SamplesPerFrame = 4000;Sine2。SamplesPerFrame = 4000;
滤波有噪声的正弦波信号
将标准差为0.1的零均值高斯白噪声加到正弦波的和中。使用FIR滤波器对结果进行过滤。在运行模拟时,频谱分析仪显示源信号中超过8000 Hz的频率被衰减。产生的信号保持在1khz的峰值,因为它落在低通滤波器的通带中。
为i = 1: 1000 x = Sine1()+Sine2()+0.1.*randn(Sine1. samplesperframe,1);y = FIRLowPass(x);SpecAna (x, y);结束发行版(SpecAna)
另请参阅
多速率滤波器设计|Simulink中噪声正弦波信号的滤波帧金宝app|MATLAB流信号处理入门|MATLAB低通滤波器设计
这个话题有用吗?