主要内容

介绍了流媒体在MATLAB信号处理

这个例子展示了如何使用系统对象流信号处理在MATLAB®。信号读取和处理逐帧(或块的块)在每一个加工循环。你可以控制每一帧的大小。

在这个例子中,1024个样本的结构是在每个处理循环使用notch-peak过滤器过滤。流的输入是一个正弦波信号逐帧从一个dsp.SineWave对象。使用创建的过滤器是一个notch-peak过滤器dsp.NotchPeakFilter对象。以确保顺利处理每一帧过滤,系统对象保持滤波器的状态自动从一帧到下一个。

初始化流组件

初始化源生成正弦波正弦波,notch-peak过滤器过滤正弦波,频谱分析仪显示过滤后的信号。输入正弦波频率有两个:一个在100赫兹,和其他在1000赫兹。创建两个dsp.SineWave对象,一个生成100 Hz正弦波,另生成1000 Hz正弦波。

Fs = 2500;Sineobject1 = dsp.SineWave (“SamplesPerFrame”,1024,“SampleRate”Fs,“频率”,100);Sineobject2 = dsp.SineWave (“SamplesPerFrame”,1024,“SampleRate”Fs,“频率”,1000);SA = dsp.SpectrumAnalyzer (“SampleRate”Fs,“NumInputPorts”2,“PlotAsTwoSidedSpectrum”假的,“ChannelNames”,{“SinewaveInput”,“NotchOutput”},“ShowLegend”,真正的);

创建Notch-Peak过滤器

创建一个二阶IIR notch-peak滤波器过滤正弦波信号。过滤器有一个缺口在750赫兹和35的品质因数。高品质因数导致3-dB窄带宽的档次。如果你在流调整滤波器参数,你可以立即看到效果的频谱分析仪输出。

我们= 750;Q = 35;BW =我们/ Q;NotchFilter = dsp.NotchPeakFilter (“带宽”BW,“CenterFrequency”我们,“SampleRate”Fs);fvtool (NotchFilter);

流和处理信号

构造一个for循环3000次迭代。在每个迭代中,流1024年样本(一帧)sinewave并应用每一帧的陷波滤波器的输入信号。输入信号生成,添加两个正弦波。合成信号是一个正弦波与两个频率:一个100 Hz,另在1000赫兹。过滤器是一个频率的缺口100,500,750,或1000 Hz,基于价值的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 = VecIndex + 1;其他的VecIndex = 1;结束VecElem = FreqVec (VecIndex);结束NotchFilter。CenterFrequency = VecElem;NotchFilter。带宽= NotchFilter.CenterFrequency / Q;= NotchFilter输出(输入);SA(输入、输出);结束fvtool (NotchFilter)

在处理循环的结束,CenterFrequency在100赫兹。在滤波器的输出,100赫兹频率陷波滤波器完全是空的,频率在1000赫兹时不受影响。

另请参阅

|||