该示例显示了如何使用信号的RMS值在有限间隔中检测离散时间信号的能量。根据定义,有限间隔的RMS值 -N≤.N≤.N由:
通过有限间隔的离散时间信号的能量 -N≤.N≤.N由:
要从RMS值确定信号能量,方形为RMS值并将结果乘以用于计算RMS值的样本。
计算MATLAB中的RMS值®和模拟金宝app®,分别使用移动的RMS系统对象™和块。
该示例显示了如何计算来自信号的RMS值的信号的能量,并将能量值与指定阈值进行比较。当信号能量高于阈值时检测事件。
创建A.dsp.movingrms.
系统对象™计算信号的移动RMS。将此对象设置为使用窗口长度为20的滑动窗口方法。创建一个Timescope.
对象以查看输出。
FrameLength = 20;FS = 100;movrmswin = dsp.movingrms(20);范围= timescope('samplerate',fs,......'timespanoverrunaction'那'滚动'那......'timespansource'那'财产'那'timespan',100,......'showgrid',真实,'layoutdimensions',[3 1],'numinputports',3);
scope.activedisplay = 1;scope.ylimits = [0 5];scope.title =.'输入信号';
scope.activedisplay = 2;scope.ylimits = [0 350];scope.title =.'用阈值比较信号能量';
scope.activedysplay = 3;scope.ylimits = [0 2];scope.plottype =.'楼梯';scope.title =.'检测信号能量大于阈值';
创建输入信号。该信号是具有帧长为20的嘈杂楼梯。阈值是200.通过平衡RMS值并将结果乘以窗口长度来计算信号的能量。将信号能量与阈值进行比较。检测事件,并且当信号能量交叉阈值时,将其标记为1。
count = 1;Vect = [1/8 1/2 1 2 3 4 3 2 1];阈值= 200;对于索引= 1:长度(vect)v = vect(索引);对于i = 1:90 x = v + 0.1 * randn(frameLength,1);y1 = movrmswin(x);Y1ENER =(Y1(END)^ 2)* 20;事件=(Y1ENER>阈值);范围(Y1,[Y1ENER。*那些(FrameLength,1),阈值。*那些(FrameLength,1)],事件。*那些(FrameLength,1));结束结束
您可以将能量掩码自定义为不同于标量阈值的模式。您还可以记录信号能量在阈值高于或低于阈值的时间。