这是机器翻译
鼠标悬停文本以查看原文。点击下面的按钮,返回该页面的英文版本。在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的比值。在双面谱中,这个值为,而在单侧光谱中,则是如此
.
使用此值,窗口长度(
)使用此关系迭代计算:
是前一个和当前缓冲数据段之间的重叠量。
为窗口的等效噪声带宽。有关光谱估计算法的详细信息,请参见光谱分析.
在这种模式下计算得到较好的频率分辨率。
要区分显示器中的两个频率,两个频率之间的距离必须至少为RBW。在这个例子中,两个峰值之间的距离是4000hz,大于.因此,你可以清楚地看到山峰。将第二个正弦波的频率改为1015hz。两个频率的差小于
.
释放(Sineobject2);Sineobject2。Fre问u在cy=1015;为Iter = 1:5000 Sinewave1 = Sineobject1();Sinewave2 = Sineobject2 ();输入= Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);SA (NoisyInput);结束
这些峰无法区分。
若要增加频率分辨率,请降低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
.
权力瓦分贝
是由:
权力dBm
是由:
对于振幅(a)为1v的正弦波信号,单侧频谱的功率为美国瓦茨
是由:
在这个例子中,这个功率等于0.5 W。dBm中对应的功率为:
在这里,功率等于26.9897 dBm。若要用峰值查找器确认此值,请单击工具>测量>峰仪.
对于白噪声信号,所有频率的频谱都是平坦的。本例中的频谱分析仪显示了[0 Fs/2]范围内的单侧频谱。对于方差为1e-4的白噪声信号,单位带宽的功率(Punitbandwidth)是1的军医。在整个频率范围内,以瓦为单位的总功率为:
频率箱的数量是总带宽与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-轴的阵列图从基于采样到基于频率,您必须设置财产的
dsp。一个rr一个yPlot
对象.对于单侧光谱,
的属性
dsp。一个rr一个yPlot
必须是0。对于双面光谱,必须- f / 2。在这个例子中,对于单边光谱,
必须在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);结束
现场处理
要在流处理光谱数据时,将估计器块的输出传递到处理逻辑中。