功率谱的估计MATLAB
功率谱(PS)的时域信号中包含的权力分配的信号频率,基于有限的数据集。信号的频域表示往往更容易比时域分析表示。许多信号处理的应用程序,比如降噪和系统识别、基于frequency-specific修改的信号。功率谱估计的目标是估计的功率谱信号从时间序列样本。根据已知的信号,评估技术可以涉及参数或非参数方法和基于时域或频域分析。例如,一个常见的参数化技术包括拟合观测到一个自回归模型。一个常见的非参数技术是周期图。使用傅里叶变换的功率谱估计方法,如韦尔奇方法和滤波器组的方法。与相对较小的信号长度、滤波器组的方法产生一个与高分辨率谱估计,更准确的噪声地板,和峰值比韦尔奇的方法更精确,低或没有频谱泄漏。这些优势为代价来增加计算和跟踪慢。 For more details on these methods, see光谱分析。您还可以使用其他技术,如最大熵方法。
在MATLAB®,您可以执行实时动态信号使用的光谱分析dsp.SpectrumAnalyzer
系统对象™。您可以查看频谱分析仪的光谱数据和将数据存储在一个工作空间变量使用isNewDataReady
和getSpectrumData
对象的功能。或者,您可以使用dsp.SpectrumEstimator
系统对象紧随其后dsp.ArrayPlot
对象的光谱数据。的输出dsp.SpectrumEstimator
对象的光谱数据。这些数据可以获得进一步的处理。
使用dsp.SpectrumAnalyzer估计功率谱
查看一个信号的功率谱,可以使用dsp.SpectrumAnalyzer
系统对象™。你可以改变输入信号的动态和看到这些变化影响对实时信号的功率谱。
初始化
初始化正弦波源生成正弦波和频谱分析仪显示信号的功率谱。输入正弦波频率有两个:一个1000 Hz,另5000 Hz。创建两个dsp.SineWave
对象,来生成一个1000 Hz正弦波和其他生成5000 Hz正弦波。
Fs = 44100;Sineobject1 = dsp.SineWave (“SamplesPerFrame”,1024,“PhaseOffset”10…“SampleRate”Fs,“频率”,1000);Sineobject2 = dsp.SineWave (“SamplesPerFrame”,1024,…“SampleRate”Fs,“频率”,5000);SA = dsp.SpectrumAnalyzer (“SampleRate”Fs,“方法”,滤波器组的,…“SpectrumType”,“权力”,“PlotAsTwoSidedSpectrum”假的,…“ChannelNames”,{输入的功率谱},“YLimits”,40 [-120],“ShowLegend”,真正的);
频谱分析仪使用滤波器组的方法来计算信号的功率谱。
估计
流信号的功率谱估计。构造一个为
循环5000次迭代。在每个迭代中,流1024年样本(一帧)的每个正弦波和计算每一帧的功率谱。输入信号生成,添加两个正弦波。合成信号是一个正弦波与两个频率:一个1000 Hz,另在5000赫兹。添加高斯噪声与零均值和标准偏差为0.001。获得的光谱数据进行进一步的处理,使用isNewDataReady
和getSpectrumData
对象的功能。的变量数据
包含了光谱数据显示在频谱分析仪以及额外的频谱的统计信息。
数据= [];为Iter = 1:7000 Sinewave1 = Sineobject1 ();Sinewave2 = Sineobject2 ();输入= Sinewave1 + Sinewave2;NoisyInput =输入+ 0.001 * randn (1024 1);SA (NoisyInput);如果SA。我年代NewDataReady data = [data;getSpectrumData(SA)];结束结束释放(SA);
频谱分析仪的输出中,可以看到两种截然不同的山峰:一个在1000赫兹,另在5000赫兹。
分辨率带宽(RBW)是最低频率带宽,可以解决频谱分析仪。默认情况下,RBWSource
财产的dsp.SpectrumAnalyzer
对象设置为汽车
。在这种模式下,RBW是1024年频率跨度的比值。在一个双边谱,这个值是,而在一个片面的光谱,它是。频谱分析仪在这个例子显示了一个片面的光谱。因此,RBW(44100/2) / 1024或21.53赫兹
使用这个值,输入样本的数量需要计算一个光谱更新,是由以下方程:。
在这个例子中,44100/21.53或2048个样本。
在“自动”模式给出了一个计算频率分辨率。
区分两个频率显示,两个频率之间的距离必须至少RBW。在这个例子中,两座山峰之间的距离是4000 Hz,大于。因此,你可以看到明显的峰值。第二个正弦波的频率更改为1015赫兹。这两个频率小于之间的区别。
释放(Sineobject2);Sineobject2。Fre问uency=1015;为Iter = 1:5000 Sinewave1 = Sineobject1 ();Sinewave2 = Sineobject2 ();输入= Sinewave1 + Sinewave2;NoisyInput =输入+ 0.001 * randn (1024 1);SA (NoisyInput);结束释放(SA);
峰值并不区分。
提高频率分辨率,减少1赫兹。
SA。RBW年代ource=“属性”;SA。RBW=1;为Iter = 1:5000 Sinewave1 = Sineobject1 ();Sinewave2 = Sineobject2 ();输入= Sinewave1 + Sinewave2;NoisyInput =输入+ 0.001 * randn (1024 1);SA (NoisyInput);结束释放(SA);
在缩放时,两座山峰,相距15赫兹,现在可区分的。
当你提高频率分辨率、时间分辨率降低。之间保持良好的平衡的频率分辨率和时间分辨率,改变RBWSource
财产汽车
。
在流,你可以改变频谱分析仪的输入属性或属性,看看立即对频谱分析仪输出的影响。例如,改变第二个正弦波的频率,当循环的指数是1000的倍数。
释放(Sineobject2);SA。RBW年代ource=“汽车”;为Iter = 1:5000 Sinewave1 = Sineobject1 ();如果(mod (Iter, 1000) = = 0)释放(Sineobject2);Sineobject2。Fre问uency=Iter; Sinewave2 = Sineobject2();其他的Sinewave2 = Sineobject2 ();结束输入= Sinewave1 + Sinewave2;NoisyInput =输入+ 0.001 * randn (1024 1);SA (NoisyInput);结束释放(SA);
流循环运行时,您可以看到,第二个正弦波峰值的变化根据迭代值。类似的,你可以改变任何频谱分析仪属性模拟运行时,看到一个相应的输出变化。
转换单元之间的权力
频谱分析仪提供了三个单位指定功率谱密度:瓦特/赫兹
,dBm /赫兹
,瓦分贝/赫兹
。相应的单位的权力美国瓦茨
,dBm
,瓦分贝
。对于电气工程应用程序,您还可以查看你的信号的均方根Vrms
或伏特分贝
。默认的光谱类型权力在dBm
。
把权力瓦瓦分贝和dBm
权力瓦分贝
是由:
权力dBm
是由:
一个正弦波信号的振幅1 V,片面的频谱的力量美国瓦茨
是由:
在这个例子中,这个权力等于0.5 W。dBm是由相应的权力:
在这里,功率等于26.9897 dBm。确认这个值峰仪,点击工具>测量>峰仪。
白噪声信号,所有频率的频谱是平的。频谱分析仪在这个例子显示了一个片面的光谱范围(0 f / 2)。为一个白噪声信号方差为1的军医,每单位带宽(Punitbandwidth)是1的军医。白噪声的总功率美国瓦茨在整个频率范围是由:
频率垃圾箱的数量是RBW总带宽的比值。片面的频谱,总带宽是采样率的一半。RBW在这个例子中是21.53赫兹。与这些价值观,白噪声的总功率美国瓦茨0.1024 W。在dBm,白噪声可以计算使用的力量10 * log10 (0.1024/10 ^ 3),等于20.103 dBm。
在瓦dBFS转化为力量
如果你设置光谱单位dBFS
并设置全面(FullScaleSource
)汽车
,权力dBFS
计算为:
地点:
P美国瓦茨
在瓦吗双和浮动信号,Full_Scale是输入信号的最大值。
定点或整数信号,Full_Scale是可以表示的最大值。
如果你指定一个手册全面(集FullScaleSource
来财产
),在dBFS
是由:
在哪里FS
是完整的比例因子中指定的吗全尺度的
财产。
一个正弦波信号的振幅1 V,片面的频谱的力量美国瓦茨
是由:
在这个例子中,这个权力等于0.5 W和最大输入信号为正弦波是1 V。在dBFS是由相应的权力:
在这里,等于0。-3.0103。在频谱分析仪来确认这个值,运行这些命令:
Fs = 1000;%采样频率sinef = dsp.SineWave (SampleRate, Fs, SamplesPerFrame, 100);范围= dsp.SpectrumAnalyzer (“SampleRate”, Fs,…“SpectrumUnits”、“dBFS’,‘PlotAsTwoSidedSpectrum’, false) % % 2 = 1∶xsine = sinef ();范围(xsine)结束
把权力dBm Vrms RMS
权力dBm
是由:
在RMS是由电压:
从上一个示例中,PdBm= 26.9897 dBm。Vrms是计算
等于0.7071。
确认这个值:
改变类型来
RMS
。打开峰值搜索点击工具>测量>峰仪。
使用dsp.SpectrumEstimator估计功率谱
还可以计算使用的信号的功率谱dsp.SpectrumEstimator
系统对象。你可以获得的输出频谱估计量和存储的数据进一步处理。查看其他对象估计
图书馆,类型帮助dsp
在MATLAB®命令提示符,然后单击估计
。
初始化
在前一节中使用相同的源使用dsp.SpectrumAnalyzer
功率谱估计。输入正弦波频率有两个:一个1000 Hz,另5000 Hz。初始化dsp.SpectrumEstimator
计算信号的功率谱使用滤波器组的方法。视图使用的信号的功率谱dsp.ArrayPlot
对象。
Fs = 44100;Sineobject1 = dsp.SineWave (“SamplesPerFrame”,1024,“PhaseOffset”10…“SampleRate”Fs,“频率”,1000);Sineobject2 = dsp.SineWave (“SamplesPerFrame”,1024,…“SampleRate”Fs,“频率”,5000);规范= dsp.SpectrumEstimator (“方法”,滤波器组的,…“PowerUnits”,dBm的,“SampleRate”Fs,“FrequencyRange”,“单向的”);ArrPlot = dsp.ArrayPlot (“PlotType”,“行”,“ChannelNames”,{输入的功率谱},…“YLimits”,30 [-80],“包含”,样品每帧的数量,“YLabel”,…“权力(dBm)”,“标题”,“单边功率谱对样本”);
估计
流信号的功率谱估计。构造一个为
循环5000次迭代。在每个迭代中,流1024年样本(一帧)的每个正弦波和计算每一帧的功率谱。添加高斯噪声,意思是在0和输入信号的标准偏差为0.001。
为Iter = 1:5000 Sinewave1 = Sineobject1 ();Sinewave2 = Sineobject2 ();输入= Sinewave1 + Sinewave2;NoisyInput =输入+ 0.001 * randn (1024 1);PSoutput =规范(NoisyInput);ArrPlot (PSoutput);结束
使用滤波器组的方法,谱估计的高分辨率和峰值精确没有频谱泄漏。
转换x设在代表频率
默认情况下,数组情节展示了功率谱数据对样本每帧的数量。点在x轴上的数量等于输入帧的长度。频谱分析仪的情节对频率的功率谱数据。片面的频谱,频率变化范围(0 f / 2)。双边频谱,频率变化范围(- f / 2 f / 2)。将数组的轴情节从纸浆包到frequency-based,做到以下几点:
点击配置属性图标。
片面的光谱-主要选项卡,设置样本增量来和x为0。
一个双边谱-主要选项卡,设置样本增量来和x来。
在这个例子中,频谱是片面的,因此,样本增量和x分别设置为44100/1024和0。指定kHz的频率,设置样本增量44.1/1024。
ArrPlot。年代一个米pleIncrement = (Fs/1000)/1024; ArrPlot.XLabel =的频率(赫兹);ArrPlot。Title =“单边功率谱对频率”;为Iter = 1:5000 Sinewave1 = Sineobject1 ();Sinewave2 = Sineobject2 ();输入= Sinewave1 + Sinewave2;NoisyInput =输入+ 0.001 * randn (1024 1);PSoutput =规范(NoisyInput);ArrPlot (PSoutput);结束
现场处理
的输出dsp.SpectrumEstimator
对象包含光谱数据和用于进一步的处理。数据可以实时处理或它可以存储在工作区中。