文档

这是机器翻译

翻译的微软
鼠标悬停文本以查看原文。点击下面的按钮,返回该页面的英文版本。

注:本页已翻译由MathWorks请点击这里
若要查看包括本页在内的所有翻译资料,请从本页底部的国家导航器中选择日本。

在MATLAB中估计功率谱密度

时域信号的功率谱密度(PSD)是基于有限数据集的信号中包含的功率在频率上的分布。信号的频域表示通常比时域表示更容易分析。许多信号处理的应用,如噪声消除和系统识别,都是基于信号的特定频率的修改。谱密度估计的目的是估计信号的谱密度从一个时间样本序列。根据对信号的了解,估计技术可以涉及参数或非参数方法,并可以基于时域或频域分析。例如,一种常见的参数化技术涉及将观测值拟合到自回归模型。一种常见的非参数技术是周期图。谱密度的估计使用傅立叶变换方法,如韦尔奇方法。你也可以使用其他技术,比如最大熵法。

在MATLAB®,可对动态信号进行实时光谱分析dsp。简介系统对象™。或者,您可以使用dsp。SpectrumEstimator系统对象用于获取和处理数据。在这种方法中,功率谱数据可用于进一步处理。

用dsp估计PSD。简介

要查看信号的PSD,可以使用dsp。简介系统对象™。您可以改变输入信号的动态,并实时查看这些变化对信号谱密度的影响。PSD数据只能查看,不能用于处理。要获取和处理数据,请使用dsp。SpectrumEstimator系统对象。更多信息,请参见“使用dsp.SpectrumEstimator估算PSD”一节。

初始化

初始化正弦波源生成正弦波,并使用频谱分析仪显示信号的PSD。输入的正弦波有两个频率:一个是1000hz,另一个是5000hz。创建两个dsp。SineWave两个对象,一个产生1000hz正弦波,另一个产生5000hz正弦波。

Fs = 44100;Sineobject1 = dsp。SineWave (“SamplesPerFrame”, 1024,“PhaseOffset”10...“SampleRate”Fs,“频率”, 1000);Sineobject2 = dsp。SineWave (“SamplesPerFrame”, 1024,...“SampleRate”Fs,“频率”, 5000);SA = dsp。简介(“SampleRate”Fs,“SpectrumType”的功率密度...“PlotAsTwoSidedSpectrum”假的,“窗口”“损害”...“ChannelNames”,{'输入的PSD '},“ShowLegend”,真正的);

频谱分析仪使用损害窗口计算信号的功率谱密度。

估计

输入并估计信号的PSD。构造一个-循环运行5000次迭代。在每次迭代中,输入每个正弦波的1024个样本(一帧),并计算每帧的PSD。要生成输入信号,需要将两个正弦波相加。产生的信号是具有两个频率的正弦波:一个是1000hz,另一个是5000hz。添加均值为0,标准差为0.001的高斯噪声。

Iter = 1:7000 Sinewave1 = Sineobject1();Sinewave2 = Sineobject2 ();输入= Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);SA (NoisyInput);结束

在频谱分析仪的输出中,您可以看到两个不同的峰值:一个在1000hz,另一个在5000 Hz。

分辨带宽(RBW)是频谱分析仪所能分辨的最小频率带宽。默认情况下,RBWSource财产的dsp。简介对象设置为汽车.该模式下的RBW为频率跨度与1024的比值。在双面谱中,这个值为美元\压裂f s {} {} {1024} $,而在单侧光谱中,则是如此$ \压裂{\压裂f s {} {} {2}} {1024} $

使用此值RBW美元,窗口长度(美元N_{样本}$)使用此关系迭代计算:美元N_{样本}= \压裂{(1 - \压裂{重叠}{100})* (NENBW) * f{年代}}{RBW} $

重叠美元是前一个和当前缓冲数据段之间的重叠量。NENBW美元为窗口的等效噪声带宽。有关光谱估计算法的详细信息,请参见光谱分析

RBW美元在这种模式下计算得到较好的频率分辨率。

要区分显示器中的两个频率,两个频率之间的距离必须至少为RBW。在这个例子中,两个峰值之间的距离是4000hz,大于RBW美元.因此,你可以清楚地看到山峰。将第二个正弦波的频率改为1015hz。两个频率的差小于RBW美元

释放(Sineobject2);Sineobject2。Fre问u在cy=1015;Iter = 1:5000 Sinewave1 = Sineobject1();Sinewave2 = Sineobject2 ();输入= Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);SA (NoisyInput);结束

这些峰无法区分。

若要增加频率分辨率,请降低RBW美元1赫兹。

SA。RBWSource =“属性”;SA。RBW=1;Iter = 1:5000 Sinewave1 = Sineobject1();Sinewave2 = Sineobject2 ();输入= Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);SA (NoisyInput);结束

在缩放时,两个峰,这是15赫兹的距离,现在可以区分。

当增加频率分辨率时,窗口长度增加,但代价是时间分辨率降低。

在流处理过程中,您可以更改输入属性或频谱分析仪属性,并立即查看频谱分析仪输出的效果。例如,当环路索引是1000的倍数时,修改第二个正弦波的频率。

要保持频率分辨率和时间分辨率之间的良好平衡,请更改RBWSource财产汽车

释放(Sineobject2);SA。RBWSource =“汽车”Iter = 1:5000 Sinewave1 = Sineobject1();如果(mod(Iter,1000) == 0)释放(sinineobject2);Sineobject2。Fre问u在cy=Iter; Sinewave2 = Sineobject2();其他的Sinewave2 = Sineobject2 ();结束输入= Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);SA (NoisyInput);结束

在运行流循环时,可以看到第二个正弦波的峰值随着迭代值的变化而变化。类似地,您可以在模拟运行时更改频谱分析仪的任何属性,并在输出中看到相应的更改。

将功率转换为dBW和dBm

频谱分析仪提供三个单元来指定功率谱密度:瓦特/赫兹dBm /赫兹,瓦分贝/赫兹.相应的功率单位为美国瓦茨dBm,瓦分贝.的默认单位权力dBm

权力瓦分贝是由:

P d B W 10 日志 10 p o w e r n w 一个 t t / 1 w 一个 t t

权力dBm是由:

P d B 10 日志 10 p o w e r n w 一个 t t / 1 l l w 一个 t t

对于振幅(a)为1v的正弦波信号,单侧频谱的功率为美国瓦茨是由:

一个 2 / 2

在这个例子中,这个功率等于0.5 W。dBm中对应的功率为:

P d B 10 日志 10 p o w e r n w 一个 t t / 1 l l w 一个 t t P d B 10 日志 10 0.5 / 10 3.

在这里,功率等于26.9897 dBm。若要用峰值查找器确认此值,请单击工具>测量>峰仪

对于白噪声信号,所有频率的频谱都是平坦的。本例中的频谱分析仪显示了[0 Fs/2]范围内的单侧频谱。对于方差为1e-4的白噪声信号,单位带宽的功率(Punitbandwidth)是1的军医。在整个频率范围内,以瓦为单位的总功率为:

P w h t e n o 年代 e P u n t bgydF4y2B一个 一个 n d w d t h n u bgydF4y2B一个 e r o f f r e u e n c y bgydF4y2B一个 n 年代 P w h t e n o 年代 e 10 4 F 年代 / 2 R B W P w h t e n o 年代 e 10 4 22050 21.53

频率箱的数量是总带宽与RBW的比值。对于单侧频谱,总带宽是采样率的一半。本例中的RBW为21.53 Hz。加上所有这些值,白噪声的总功率为-39.87 dBm。

用dsp估计PSD。SpectrumEstimator

使用dsp。简介系统对象™,您可以查看和分析,但不能处理PSD数据。方法中的Estimator对象之一来处理数据,必须计算谱密度估计图书馆。的对象估计图书馆,类型帮助dsp在MATLAB®命令提示符,单击估计

初始化

的上一节中使用相同的源代码dsp。简介来估计PSD。输入的正弦波有两个频率:一个是1000hz,另一个是5000hz。初始化dsp。SpectrumEstimator计算信号的PSD,和dsp。一个rr一个yPlot对象来查看信号的PSD。

Fs = 44100;Sineobject1 = dsp。SineWave (“SamplesPerFrame”, 1024,“PhaseOffset”10...“SampleRate”Fs,“频率”, 1000);Sineobject2 = dsp。SineWave (“SamplesPerFrame”, 1024,...“SampleRate”Fs,“频率”, 5000);规范= dsp。SpectrumEstimator (“SpectrumType”的功率密度...“PowerUnits”dBm的“SampleRate”Fs,...“FrequencyRange”“单向的”);ArrPlot = dsp。ArrayPlot (“PlotType”“行”“ChannelNames”,{'输入的PSD '},...“YLimits”20 [-90],“包含”“每帧样本数量”“YLabel”...“权力(dBm)”“标题”“相对于样本的单边功率谱”);

估计

输入并估计信号的PSD。构造一个-循环运行5000次迭代。在每次迭代中,输入每个正弦波的1024个样本(一帧),并计算每帧的PSD。对输入信号添加均值为0,标准差为0.001的高斯噪声。

Iter = 1:5000 Sinewave1 = Sineobject1();Sinewave2 = Sineobject2 ();输入= Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);PSDoutput =规范(NoisyInput);ArrPlot (PSDoutput);结束

转换x-轴表示频率

默认情况下,dsp。一个rr一个yPlot绘制PSD数据与每帧样本数量的关系图。点的数量x-axis等于输入帧的长度。对于单侧谱,的跨度x-axis等于输入帧的一半。频谱分析仪根据频率绘制PSD数据图。对于单侧谱,频率变化范围为[0 Fs/2]。对于双面光谱,频率在[-Fs/ 2fs /2]的范围内变化。将x-轴的阵列图从基于采样到基于频率,您必须设置SampleIncrement美元财产的dsp。一个rr一个yPlot对象Fs / framelength美元.对于单侧光谱,XOffset美元的属性dsp。一个rr一个yPlot必须是0。对于双面光谱,XOffset美元必须- f / 2。在这个例子中,对于单边光谱,SampleIncrement美元必须在44100/1024。

ArrPlot。SampleIncrement = Fs / 1024;ArrPlot。包含=的频率(赫兹);ArrPlot。Title ='相对于频率的片面功率谱'Iter = 1:5000 Sinewave1 = Sineobject1();Sinewave2 = Sineobject2 ();输入= Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);PSDoutput =规范(NoisyInput);ArrPlot (PSDoutput);结束

现场处理

要在流处理光谱数据时,将估计器块的输出传递到处理逻辑中。

更多关于

这个话题有帮助吗?