主要内容

MATLAB中的流信号处理简介

此示例显示如何在MATLAB中使用系统对象进行流式传输信号处理。在每个处理循环中,通过帧(或通过块)读取和处理帧的帧。您可以控制每个帧的大小。

在该示例中,使用每个处理循环中的凹口峰值滤波器过滤1024个样本的帧。输入是由帧流流帧的正弦波信号dsp.sinewave.对象。过滤器是使用a创建的凹口峰值滤波器dsp.notchpeakfilter对象。为了确保在过滤每一帧时进行平滑处理,System对象自动维护从一帧到下一帧的过滤器状态。

初始化流组件

初始化正弦波源以生成正弦波,凹口峰值过滤器过滤正弦波,以及频谱分析仪以显示滤波器的信号。输入正弦波有两个频率:一个在100 Hz,另一个处于1000 Hz。创建二dsp.sinewave.对象,一个要生成100 Hz正弦波,另一个生成1000 Hz正弦波。

FS = 2500;sineObject1 = dsp.sinewave('samplesperframe',1024,......'采样率',fs,'频率', 100);Sineobject2 = dsp。SineWave ('samplesperframe',1024,......'采样率',fs,'频率',1000);sa = dsp.spectrumanalyzer('采样率',fs,'numinputports'2,......“PlotAsTwoSidedSpectrum”假的,......“ChannelNames”, {'sinewaveinpul''notchoutput'},'陈旧',真的);

创建Notch-Peak过滤器

创建二阶IIR Notch峰值滤波器以过滤正弦波信号。过滤器具有750 Hz的凹口,Q系数为35.更高的Q因子导致缺口的较窄的3-dB带宽。如果在流过程中调整过滤器参数,则可以在Spectrum Analyzer输出中立即看到效果。

WO = 750;q = 35;bw = wo / q;notchfilter = dsp.notchpeakfilter('带宽',bw,......'中心罚款',禾,'采样率',fs);FVTool(NotchFilter);

流入和处理信号

构建用于运行3000次迭代的for-循环。在每次迭代中,在1024个样本(一帧)的SINEWAVE中的流并在输入信号的每个帧上应用凹口滤波器。要生成输入信号,请添加两个正弦波。得到的信号是具有两个频率的正弦波:一个在100Hz处,另一个在1000Hz处。基于值的值,滤波器的槽口被调谐到100,500,750或1000Hz的频率vecindex.。过滤器带宽相应地改变。当流过滤参数在流期间发生变化时,频谱分析器中的输出相应地更新。

freqvec = [100 500 750 1000];vecindex = 1;vecelem = freqvec(vecindex);为了iter = 1:3000 sinewave1 = sineObject1();sinewave2 = sineObject2();输入= sinewave1 + sinewave2;如果(mod(iter,350)== 0)如果VecIndex < 4 = VecIndex+1;别的vecindex = 1;结尾vecelem = freqvec(vecindex);结尾NotchFilter.Centerfrequency = Vecelem;NotchFilter.BandWidth = NotchFilter.Centerfrequency / Q;输出= NotchFilter(输入);SA(输入,输出);结尾fvtool (NotchFilter)

在处理循环的末尾,中心罚款是100赫兹。在过滤器输出中,陷波滤波器完全耗尽100Hz频率,而1000Hz的频率不受影响。

也可以看看

|||