主要内容

估算中功率谱MATLAB

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

在MATLAB®,您可以执行实时频谱分析的动态信号使用dsp。年代pectru米一个n一个lyzer系统对象™。属性可以在频谱分析仪中查看频谱数据,并将数据存储在工作空间变量中isNewDataReadygetSpectrumData对象的功能。或者,你可以用dsp。年代pectru米Estimator系统对象,然后是dsp。一个rr一个yPlot对象查看光谱数据。输出dsp。年代pectru米Estimator对象是光谱数据。这些数据可用于进一步处理。

利用dsp估算功率谱。简介

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

初始化

初始化正弦波源,生成正弦波;初始化频谱分析仪,显示信号的功率谱。输入的正弦波有两个频率:一个是1000赫兹,另一个是5000赫兹。创建两个dsp。年代我neW一个ve对象,一个产生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。年代pectru米一个n一个lyzer(“SampleRate”Fs,“方法”滤波器组的...“SpectrumType”“权力”“PlotAsTwoSidedSpectrum”假的,...“ChannelNames”,{“输入功率谱”},“YLimits”, 40 [-120],“ShowLegend”,真正的);

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

估计

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

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

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

分辨率带宽(Resolution Bandwidth, RBW)是频谱分析仪能分辨的最小频率带宽。默认情况下,RBWSource财产的dsp。年代pectru米一个n一个lyzer对象设置为汽车.RBW是频率广度与1024的比值。在双边谱中,这个值是美元\压裂f s {} {} {1024} $但从单方面的角度来看,事实的确如此$ \压裂{\压裂f s {} {} {2}} {1024} $.本例中的频谱分析仪显示的是单侧频谱。因此,RBW是(44100/2)/1024或21.53Hz

使用RBW美元,计算一个光谱更新所需的输入样本的数量,美元N_{样本}$为下式:美元N_{样本}= \压裂f s {} {} {RBW} $

在这个例子中,美元N_{样本}$是44100/21.53或2048个样品。

RBW美元在“自动”模式下计算得到一个很好的频率分辨率。

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

释放(Sineobject2);Sineobject2。Fre问uency=1015;Iter = 1:50 000 sininewave1 = sinineobject1 ();Sinewave2 = Sineobject2 ();Input = Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);SA (NoisyInput);结束释放(SA);

山峰是无法区分的。

要提高频率分辨率,就要降低频率RBW美元1赫兹。

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

在放大时,两个相隔15赫兹的峰值现在可以区分了。

当频率分辨率增大时,时间分辨率减小。要在频率分辨率和时间分辨率之间保持良好的平衡,就要改变频率分辨率RBWSource财产汽车

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

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

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

转换单位之间的功率

频谱分析仪提供三个单位来指定功率谱密度:瓦特/赫兹dBm /赫兹,瓦分贝/赫兹.对应的功率单位为美国瓦茨dBm,瓦分贝.对于电气工程应用,您也可以查看信号的RMS在Vrms伏特分贝.缺省情况下,spectrum类型为权力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)是1的军医。白噪声的总功率美国瓦茨在整个频率范围内为:

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;%采样频率sinef = dsp.SineWave('SampleRate',Fs,'SamplesPerFrame',100);范围= dsp.SpectrumAnalyzer(“SampleRate”,Fs,…'SpectrumUnits','dBFS','PlotAsTwoSidedSpectrum',false) %% for ii = 1:10万xsin = sinef();范围(xsine)结束
然后,单击工具>测量>峰仪

将dBm中的Power转换为vrm中的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来估计功率谱。输入的正弦波有两个频率:一个是1000赫兹,另一个是5000赫兹。初始化dsp。年代pectru米Estimator用滤波器组方法计算信号的功率谱。查看信号的功率谱dsp。一个rr一个yPlot对象。

Fs = 44100;Sineobject1 = dsp。SineWave (“SamplesPerFrame”, 1024,“PhaseOffset”10...“SampleRate”Fs,“频率”, 1000);Sineobject2 = dsp。SineWave (“SamplesPerFrame”, 1024,...“SampleRate”Fs,“频率”, 5000);规范= 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:50 000 sininewave1 = sinineobject1 ();Sinewave2 = Sineobject2 ();Input = Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);PSoutput =规范(NoisyInput);ArrPlot (PSoutput);结束

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

转换x-轴表示频率

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

  • 点击配置属性图标。

  • 单侧光谱-开主要选项卡,设置样本增量Fs / FrameLength美元x为0。

  • 对于一个双边光谱-开主要选项卡,设置样本增量Fs / FrameLength美元x- f / 2美元

在这个例子中,频谱是片面的,因此样本增量x分别为44100/1024和0。要指定以千赫为单位的频率,请设置样本增量44.1/1024。

arrplot.sampleincrement =(fs / 1000)/ 1024;arrplot.xlabel =.的频率(赫兹);ArrPlot。Title =“相对于频率的单侧功率谱”Iter = 1:50 000 sininewave1 = sinineobject1 ();Sinewave2 = Sineobject2 ();Input = Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);PSoutput =规范(NoisyInput);ArrPlot (PSoutput);结束

现场处理

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

相关的话题