主要内容

MATLAB中的流信号处理简介

此示例演示如何使用系统对象在MATLAB®中进行流信号处理。信号在每个处理循环中逐帧(或逐块)读取和处理。可以控制每个帧的大小。

在本例中,在每个处理循环中使用陷波峰值滤波器对1024个样本的帧进行滤波。输入是一个正弦波信号,该信号从一个处理循环逐帧进行流传输正弦波对象。该过滤器是使用NotchPeakFilter对象。为了确保在过滤每一帧时进行平滑处理,System对象自动维护从一帧到下一帧的过滤器状态。

初始化流组件

初始化正弦波源以生成正弦波,初始化陷波峰值滤波器以过滤正弦波,初始化频谱分析仪以显示过滤后的信号。输入正弦波有两个频率:一个为100 Hz,另一个为1000 Hz。创建两个正弦波对象,一个用于生成100 Hz正弦波,另一个用于生成1000 Hz正弦波。

Fs=2500;Sineobject1=dsp.SineWave(“样品性能框架”,1024,...“采样器”,财政司司长,“频率”, 100);Sineobject2 = dsp。SineWave (“样品性能框架”,1024,...“采样器”,财政司司长,“频率”,1000); SA=dsp.SpectrumAnalyzer(“采样器”,财政司司长,“NumInputPorts”2....“PlotAsTwoSidedSpectrum”假的,...“ChannelNames”, {“正弦波输入”,“不吃巧克力”},“ShowLegend”,对);

创建Notch-Peak过滤器

创建二阶IIR陷波峰值滤波器以过滤正弦波信号。该滤波器的陷波频率为750 Hz,Q系数为35。Q因子越高,陷波器的3-dB带宽越窄。如果在流媒体传输期间调整过滤器参数,则可以在频谱分析仪输出中立即看到效果。

Wo=750;Q=35;BW=Wo/Q;NotchFilter=dsp.NotchPeakFilter(“带宽”,BW,...“中心频率”,Wo,“采样器”,Fs);fvtool(NotchFilter);

输入和处理信号

构造一个for循环以运行3000次迭代。在每次迭代中,以1024个样本(一帧)进行流式处理在输入信号的每一帧上应用陷波滤波器。要生成输入信号,将两个正弦波相加。合成的信号是两个频率的正弦波:一个在100 Hz,另一个在1000 Hz。根据向量索引.滤波器带宽也随之改变。当滤波参数在流处理过程中发生变化时,频谱分析仪的输出也随之更新。

FreqVec=[100 500 750 1000];向量指数=1;VecElem=FreqVec(向量索引);对于Iter=1:3000 Sinewave1=Sineobject1();Sinewave2=Sineobject2();Input=Sinewave1+Sinewave2;如果(国际热核实验堆350模型=0)如果VecIndex < 4 = VecIndex+1;其他的向量指数=1;终止VecElem=FreqVec(向量索引);终止NotchFilter.CenterFrequency=VecElem;NotchFilter.Bandwidth=NotchFilter.CenterFrequency/Q;输出=NotchFilter(输入);SA(输入、输出);终止fvtool (NotchFilter)

在处理循环的末尾,CenterFrequency在滤波器输出中,100 Hz的频率被陷波滤波器完全调零,而1000 Hz的频率不受影响。

另见

|||