文档

这是机器翻译

翻译的微软
鼠标悬停在文本上查看原文。点击下面的按钮,返回该页面的英文版本。

注:本页由译者翻译MathWorks请按此处
要查看包括本页在内的所有翻译材料,请从本页底部的国家导航器中选择日本。

噪声正弦波信号滤波帧的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)

另请参阅

|||

这个话题有用吗?