文档

估计功率谱MATLAB

时域信号的功率谱(PS)是基于有限数据集的信号中包含的功率在频率上的分布。信号的频域表示通常比时域表示更容易分析。许多信号处理的应用,如噪声消除和系统识别,都是基于信号的特定频率的修改。功率谱估计的目标是从一组时间样本中估计出信号的功率谱。根据对信号的了解,估计技术可以涉及参数或非参数方法,可以基于时域或频域分析。例如,一种常见的参数化技术涉及将观测值拟合到自回归模型。一种常见的非参数技术是周期图。功率谱估计采用傅立叶变换方法,如韦尔奇方法和滤波器组方法。对于长度相对较小的信号,滤波器组方法产生的频谱估计具有更高的分辨率、更精确的噪声下限和比Welch方法更精确的峰值,且具有较低或无谱泄漏。这些优点是以增加计算量和降低跟踪速度为代价的。 For more details on these methods, see光谱分析.你也可以使用其他技术,比如最大熵法。

在MATLAB®,可对动态信号进行实时光谱分析dsp。年代pectru米一个n一个lyzer系统对象™。方法可以查看光谱分析仪中的光谱数据,并将数据存储在工作空间变量中isNewDataReady而且getSpectrumData对象的功能。或者,您可以使用dsp。年代pectru米Estimator系统对象后跟dsp。一个rr一个yPlot对象查看光谱数据。的输出dsp。年代pectru米Estimator对象是光谱数据。这些数据可以被获取以作进一步处理。

用dsp估计功率谱。简介

若要查看信号的功率谱,可以使用dsp。年代pectru米一个n一个lyzer系统对象™。您可以更改输入信号的动态,并实时查看这些更改对信号功率谱的影响。

初始化

初始化正弦波源生成正弦波,并启动频谱分析仪显示信号的功率谱。输入的正弦波有两个频率:一个是1000hz,另一个是5000hz。创建两个dsp。年代我neW一个ve两个对象,一个产生1000hz正弦波,另一个产生5000hz正弦波。

Fs = 44100;sinineobject1 = dsp。SineWave (“SamplesPerFrame”, 1024,“PhaseOffset”10...“SampleRate”Fs,“频率”, 1000);sinineobject2 = dsp。SineWave (“SamplesPerFrame”, 1024,...“SampleRate”Fs,“频率”, 5000);SA = dsp。年代pectru米一个n一个lyzer(“SampleRate”Fs,“方法”滤波器组的...“SpectrumType”“权力”“PlotAsTwoSidedSpectrum”假的,...“ChannelNames”, {“输入功率谱”},“YLimits”, 40 [-120],“ShowLegend”,真正的);

频谱分析仪采用滤波器组方法计算信号的功率谱。

估计

输入并估计信号的功率谱。构造一个-循环运行5000次迭代。在每次迭代中,输入每个正弦波的1024个样本(一帧),并计算每帧的功率谱。要生成输入信号,需要将两个正弦波相加。产生的信号是具有两个频率的正弦波:一个是1000hz,另一个是5000hz。添加均值为零、标准差为0.001的高斯噪声。要获取光谱数据以作进一步处理,请使用isNewDataReadygetSpectrumData对象的功能。的变量数据包含显示在频谱分析仪上的光谱数据以及有关光谱的其他统计信息。

数据= [];Iter = 1:7000 Sinewave1 = Sineobject1();Sinewave2 = Sineobject2();输入= Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);SA (NoisyInput);如果SA。我年代NewDataReady data = [data;getSpectrumData(SA)];结束结束释放(SA);

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

分辨带宽(Resolution Bandwidth, RBW)是频谱分析仪能分辨的最小频率带宽。默认情况下,RBWSource的属性dsp。年代pectru米一个n一个lyzer对象设置为汽车.该模式下的RBW为频率跨度与1024的比值。在双面谱中,这个值为,而在单侧光谱中,则是如此.本例中的频谱分析仪显示的是单侧频谱。因此,RBW为(44100/2)/1024或21.53Hz

使用此值,计算一次光谱更新所需的输入样本数,由下式给出:

在这个例子中,是44100/21.53或2048个样本。

在“自动”模式下计算得到良好的频率分辨率。

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

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

这些峰无法区分。

若要增加频率分辨率,请降低到1hz。

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

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

当你增加频率分辨率时,时间分辨率降低。要保持频率分辨率和时间分辨率之间的良好平衡,请更改RBWSource财产汽车

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

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

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

转换单位之间的功率

频谱分析仪提供三个单元来指定功率谱密度:瓦特/赫兹dBm /赫兹,瓦分贝/赫兹.相应的功率单位为美国瓦茨dBm,瓦分贝.对于电气工程应用,您还可以查看信号的均方根Vrms伏特分贝.默认的频谱类型为权力dBm

将功率转换为dBW和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

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

P W 一个 t t 年代 一个 2 / 2 P W 一个 t t 年代 1 / 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)为1e-4。白噪声的总功率美国瓦茨整个频率范围由:

P w h t e n o 年代 e P u n t b 一个 n d w d t h n u b e r o f f r e u e n c y b 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。有了这些值,白噪声的总功率在美国瓦茨为0.1024 W。在dBm中,白噪声的功率可以用10 * log10 (0.1024/10 ^ 3),等于20.103 dBm。

将功率转换为dBFS

如果你把光谱单位设为dBFS并设置全比例(FullScaleSource)汽车,电源接通dBFS计算方法为:

P d B F 年代 20. 日志 10 P w 一个 t t 年代 / F u l l _ 年代 c 一个 l e

地点:

  • P美国瓦茨功率单位是瓦吗

  • 对于双信号和浮点信号,Full_Scale为输入信号的最大值。

  • 对于定点或整数信号,Full_Scale是可以表示的最大值。

如果指定手动全比例尺(设置FullScaleSource财产),接通电源dBFS由:

P F 年代 20. 日志 10 P w 一个 t t 年代 / F 年代

在哪里FS中是否指定了完整的比例因子全尺度的财产。

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

P W 一个 t t 年代 一个 2 / 2 P W 一个 t t 年代 1 / 2

在这个例子中,这个功率等于0.5 W,正弦波的最大输入信号是1v。dBFS中相应的功率由:

P F 年代 20. 日志 10 1 / 2 / 1

这里,幂等于-3.0103。要在频谱分析仪中确认此值,运行以下命令:

Fs = 1000;%采样频率sinif = dsp.SineWave('SampleRate',Fs,'SamplesPerFrame',100);scope = sp. spectrum alyzer('SampleRate',Fs,…'SpectrumUnits','dBFS',' plotastwosidespectrum ',false) %% for ii = 1:100000 xsin = sinf ();范围(xsine)结束
然后,单击工具>测量>峰仪

将dBm中的Power转换为Vrms中的RMS

权力dBm由:

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

有效值电压由:

V r 年代 10 P d B / 20. 10 3.

从前面的例子中,PdBm等于26.9897 dBm。Vrms计算为

V r 年代 10 26.9897 / 20. 0.001

等于0.7071。

确认该值:

  1. 改变类型RMS

  2. 通过单击打开峰值查找器工具>测量>峰仪

用dsp估计功率谱。SpectrumEstimator

方法也可以计算信号的功率谱dsp。年代pectru米Estimator系统对象。您可以获得频谱估计器的输出并存储数据以供进一步处理。控件中的其他对象估计图书馆,类型帮助dsp在MATLAB®命令提示符,单击估计

初始化

的上一节中使用相同的源代码dsp。年代pectru米一个n一个lyzer估计功率谱。输入的正弦波有两个频率:一个是1000hz,另一个是5000hz。初始化dsp。年代pectru米Estimator用滤波器组方法计算信号的功率谱。查看信号的功率谱dsp。一个rr一个yPlot对象。

Fs = 44100;sinineobject1 = dsp。SineWave (“SamplesPerFrame”, 1024,“PhaseOffset”10...“SampleRate”Fs,“频率”, 1000);sinineobject2 = dsp。SineWave (“SamplesPerFrame”, 1024,...“SampleRate”Fs,“频率”, 5000);SpecEst = dsp。年代pectru米Estimator(“方法”滤波器组的...“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 = Input + 0.001*randn(1024,1);PSoutput = SpecEst(NoisyInput);ArrPlot (PSoutput);结束

采用滤波器组方法,谱估计分辨率高,峰值精确,无谱泄漏。

转换x-轴表示频率

默认情况下,阵列图显示每帧样本数量的功率谱数据。x轴上的点数等于输入帧的长度。频谱分析仪根据频率绘制功率谱数据图。对于单侧谱,频率变化范围为[0 Fs/2]。对于双面光谱,频率在[-Fs/ 2fs /2]的范围内变化。要将数组图的x轴从基于样本转换为基于频率,请执行以下操作:

  • 按一下配置属性图标。

  • 对于单侧光谱-开主要选项卡,设置样本增量而且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 = Input + 0.001*randn(1024,1);PSoutput = SpecEst(NoisyInput);ArrPlot (PSoutput);结束

现场处理

的输出dsp。年代pectru米Estimator对象包含光谱数据,可用于进一步处理。数据可以实时处理,也可以存储在工作空间中。

相关的话题