主要内容

高分辨率光谱分析在MATLAB

这个例子展示了如何执行高分辨率光谱分析在MATLAB®中使用一个高效过滤器银行有时被称为信道器。作为比较,传统的平均修正周期图也显示(韦尔奇的)方法。类似的例子在仿真软件™,明白了金宝app高分辨率光谱分析模型金宝app

决议在光谱分析

决议在这种情况下是指能够区分两个光谱躺在彼此附近的组件。分辨率取决于使用时域区段的长度来计算频谱。当窗口用于时域部分与改进的周期图一样,使用的窗口类型也会影响该决议。

经典的权衡不同的窗口是分辨率和旁瓣衰减。矩形窗口提供最高的分辨率,但很穷(~ 14 dB)旁瓣衰减。可怜的旁瓣衰减会导致光谱窗口组件被埋葬的操作,因此是不可取的。损害windows提供良好的旁瓣衰减为代价较低的频率分辨率。可参数化的窗口,如皇帝允许控制通过改变窗口参数的权衡。

而不是使用修改后的平均周期图(韦尔奇的方法),高分辨率估计可以通过使用滤波器组的方法,模拟模拟频谱分析仪是如何工作的。主要的思想是把信号分成不同的频率垃圾箱使用滤波器组和计算每个子带信号的平均功率。

过滤器种以银行为基础的谱估计

对于这个示例,需要使用512种不同的带通滤波器得到相同的解决方案提供的矩形窗口。为了实现512年的带通滤波器有效地,多相分析滤波器组(又名信道器)。这是通过一个原型低通滤波器的带宽Fs / N, N所需的频率分辨率(512在这个例子中),并实现滤波器的多相形式就像一个实现冷杉杀害多人者。而不是添加所有分支的结果在杀害多人者的情况下,每个分支N-point FFT作为输入使用。它可以显示每个FFT的调制版本对应的输出低通滤波器,从而实现带通滤波器。滤波器组的方法的主要缺点是增加计算由于多相滤波器以及慢适应变化的信号,由于美国的过滤器。更多细节可以在书中找到的多频信号处理通信系统的弗雷德里克•j•哈里斯。普伦蒂斯霍尔PTR, 2004年。

在这个例子中,100年的平均谱估计中使用。采样频率设置为1 MHz。假设我们正在与帧的64个样本需要缓冲为了执行频谱估计。

NAvg = 100;Fs = 1 e6;FrameSize = 64;NumFreqBins = 512;filterBankRBW = Fs / NumFreqBins;

简介实现了一个过滤种以银行为基础的时频谱估计方法相应的设置。在内部,它使用dsp.Channelizer实现了多相滤波+ FFT(并且可以用于其他应用程序除了光谱分析,如多载波通信)。

filterBankSA =简介(“SampleRate”Fs,“RBWSource”,“属性”,“RBW”filterBankRBW,“AveragingMethod”,“指数”,“ForgettingFactor”,0.001,“PlotAsTwoSidedSpectrum”假的,“YLimits”50 [-150],“YLabel”,“权力”,“标题”,滤波器组功率谱估计的,“位置”,50 375 800 450);

测试信号

在这个例子中,测试信号是64年收购——样本帧。用于光谱分析,框架越大,分辨率越好。

两个正弦波的测试信号由加高斯白噪声。改变频率垃圾箱的数量,振幅,频率和噪声功率值是指导和鼓励。

sinegen = dsp.SineWave (“SampleRate”Fs,“SamplesPerFrame”,FrameSize);

初始测试用例

首先,计算滤波器组谱估计正弦波的振幅1和2 200 kHz的频率和250 kHz,分别。高斯白噪声的平均功率(方差)1 e-12。注意,-114年单方面的噪声地板dBm是准确谱估计中所示。

(sinegen) sinegen发布。振幅= (1 - 2);sinegen。频率= (200000 - 250000);noiseVar = 1 e-12;% -114 dBm单方面的noiseFloor = 10 * log10 ((noiseVar / (NumFreqBins / 2)) / 1 e - 3);流(“噪声地板\ n”);
噪声地板
流(的滤波器组噪声地板= %。2 f dBm \ n \ n”,noiseFloor);
滤波器组噪声地板= -114.08 dBm
步伐= 10 *装天花板(NumFreqBins / FrameSize);t = 1:步伐x =总和(sinegen (), 2) + sqrt (noiseVar) * randn (FrameSize, 1);filterBankSA (x);结束发行版(filterBankSA)

数值计算使用频谱估计

dsp.SpectrumEstimator可以用来计算滤波器组谱估计。

为了满足频谱估计更长的帧,一个缓冲区之前收集512个样本计算谱估计。虽然不习惯在这个例子中,缓冲允许重叠可以用来增加平均获得的数量从一个给定的一组数据。

filterBankEstimator = dsp.SpectrumEstimator (“方法”,滤波器组的,“AveragingMethod”,“指数”,“ForgettingFactor”,0.7,“SampleRate”Fs,“FrequencyRange”,“单向的”,“PowerUnits”,dBm的);浅黄色= dsp.AsyncBuffer;释放(sinegen)步伐= 10 *装天花板(NumFreqBins / FrameSize);t = 1:步伐x =总和(sinegen (), 2) + sqrt (noiseVar) * randn (FrameSize, 1);写(浅黄色,x);%缓冲数据如果迷。NumUnreadSamples > = NumFreqBins xbuff =阅读(浅黄色,NumFreqBins);Pfbse = filterBankEstimator (xbuff);结束结束

使用不同的方法比较频谱估计

计算韦尔奇和滤波器组谱估计正弦波的振幅1和2 200 kHz的频率和250 kHz,分别。高斯白噪声的平均功率(方差)1 e-12。

(sinegen) sinegen发布。振幅= (1 - 2);sinegen。频率= (200000 - 250000);filterBankSA。RBWSource =“汽车”;filterBankSA。ForgettingFactor = 0.7;filterBankSA。位置= (50 375 400 450);welchSA =简介(“方法”,“韦尔奇”,“SampleRate”Fs,“PlotAsTwoSidedSpectrum”假的,“YLimits”50 [-150],“YLabel”,“权力”,“标题”,韦尔奇功率谱估计的,“位置”,(450 375 400 450));noiseVar = 1 e-12;步伐= 500 *装天花板(NumFreqBins / FrameSize);t = 1:步伐x =总和(sinegen (), 2) + sqrt (noiseVar) * randn (FrameSize, 1);filterBankSA (x);welchSA (x);结束

发行版(filterBankSA)

RBW = 488.28;hannNENBW = 1.5;welchNSamplesPerUpdate = f * hannNENBW / RBW;filterBankNSamplesPerUpdate = Fs / RBW;流(“样品/更新\ n”);
样品/更新
流(“韦尔奇样品/更新= %。3 f样品\ n”,welchNSamplesPerUpdate);
韦尔奇样品/更新= 3072.008样本
流(“过滤器银行样本/更新= %。3 f样品\ n \ n”,filterBankNSamplesPerUpdate);
滤波器组样本/更新= 2048.005样本
welchNoiseFloor = 10 * log10 ((noiseVar / (welchNSamplesPerUpdate / 2)) / 1 e - 3);filterBankNoiseFloor = 10 * log10 ((noiseVar / (filterBankNSamplesPerUpdate / 2)) / 1 e - 3);流(“噪声地板\ n”);
噪声地板
流(“韦尔奇噪声地板= %。2 f dBm \ n”,welchNoiseFloor);
韦尔奇噪声地板= -121.86 dBm
流(的滤波器组噪声地板= %。2 f dBm \ n \ n”,filterBankNoiseFloor);
滤波器组噪声地板= -120.10 dBm

韦尔奇和过滤器种以银行为基础的谱估计检测到两个音调在200 kHz和250千赫。过滤器种以银行为基础的谱估计有更好的隔离的音调。同样的分辨率带宽(RBW),平均修正周期图(韦尔奇的)方法需要3073个样本来计算滤波器所需的频谱比2048年种以银行为基础的估计。注意,-120年单方面的噪声地板dBm是准确地显示在滤波器组谱估计。

比较改进的周期图使用不同的窗口

考虑两个频谱分析仪中,唯一的区别是:使用的窗口矩形或损害。

rectRBW = Fs / NumFreqBins;hannNENBW = 1.5;hannRBW = f * hannNENBW / NumFreqBins;rectangularSA =简介(“方法”,“韦尔奇”,“SampleRate”Fs,“窗口”,“矩形”,“RBWSource”,“属性”,“RBW”rectRBW,“PlotAsTwoSidedSpectrum”假的,“YLimits”50 [-50],“YLabel”,“权力”,“标题”,“韦尔奇功率谱估计使用矩形窗口”,“位置”,50 375 400 450);hannSA =简介(“方法”,“韦尔奇”,“SampleRate”Fs,“窗口”,“损害”,“RBWSource”,“属性”,“RBW”hannRBW,“PlotAsTwoSidedSpectrum”假的,“YLimits”50 [-150],“YLabel”,“权力”,“标题”,“韦尔奇功率谱估计使用损害窗口”,“位置”,(450 375 400 450));(sinegen) sinegen发布。振幅= (1 - 2);%尝试[0 2]sinegen。频率= (200000 - 250000);noiseVar = 1 e-12;步伐= 10 *装天花板(NumFreqBins / FrameSize);t = 1:步伐x =总和(sinegen (), 2) + sqrt (noiseVar) * randn (FrameSize, 1);rectangularSA (x);hannSA (x);结束发行版(rectangularSA)

发行版(hannSA)

矩形窗口提供了一个狭窄的mainlobe牺牲低旁瓣衰减。相比之下,损害窗口提供了一个广泛的mainlobe换取更大的旁瓣衰减。更广泛的mainlobe尤为明显在250千赫。windows展览大型滚边的频率正弦波谎言。这面具感兴趣的低功率信号噪声地板之上。问题是几乎不存在的滤波器组的情况。

改变振幅(0 - 2),而不是(1 2)实际上意味着一个正弦波250 kHz和噪音。这种情况下很有趣因为矩形窗口时表现特别好200 kHz正弦波干扰。原因是512年250 kHz的频率分裂1 MHz均匀。在这种情况下,时域引入的副本中固有频率抽样FFT有时限的数据段的做一个完美的周期性扩展用于功率谱计算。一般来说,对于任意频率的正弦波,这并非如此。这依赖正弦波的频率与信号干扰的敏感性是改进的周期图方法的另一个缺点。

分辨率带宽(RBW)

每个分析器的分辨率带宽可以计算一次输入长度。RBW表示电源组件计算带宽。也就是说,功率谱估计的每个元素代表了权力瓦特,瓦分贝或dBm的带宽宽度RBW围绕的元素相对应的频率估计。每个元素的力量值的功率谱估计是发现通过整合频带上的能量密度RBW张成的价值。低RBW显示高分辨率由于权力是在细网格计算(一个较小的带宽)。矩形窗最高分辨率的窗口。凯撒的窗口,RBW取决于所使用的旁瓣衰减。

流(“RBW \ n”)
RBW
流(“Welch-Rectangular RBW = %。3 f赫兹\ n”,rectRBW);
Welch-Rectangular RBW = 1953.125赫兹
流(“Welch-Hann RBW = %。3 f赫兹\ n”,hannRBW);
Welch-Hann RBW = 2929.688赫兹
流(“过滤器银行RBW = %。3 f赫兹\ n \ n”,filterBankRBW);
滤波器组RBW = 1953.125赫兹

设置的振幅(0 - 2),即有一个正弦波的情况下在250 kHz,有趣的是理解之间的关系RBW和地板上。预期噪声地板是10 * log10 ((noiseVar / (NumFreqBins / 2)) / 1 e - 3)约-114 dBm。相对应的谱估计矩形窗口有预期的噪音,但使用损害窗口有一个噪声的谱估计地板2 dBm高于预期。谱估计的原因是在512频点计算功率谱是集成的RBW特定窗口。对于矩形窗口,RBW正是1 MHz / 512的谱估计包含独立的估计为每个频率本电源。损害窗口,RBW较大,所以谱估计包含重叠的权力从一个频率本。这个重叠的力量增加了力量值在每一本,调节噪声地板。量可以计算分析如下:

hannNoiseFloor = 10 * log10 ((noiseVar / (NumFreqBins / 2) * hannRBW / rectRBW) / 1 e - 3);流(“噪声地板\ n”);
噪声地板
流('噪音损害地板= %。2 f dBm \ n \ n”,hannNoiseFloor);
损害噪声地板= -112.32 dBm

正弦曲线接近对方

考虑下面的案例说明解决问题。正弦信号频率更改为200 kHz和205千赫。过滤器银行估计仍然是准确的。专注于基于窗口的估计,因为更广泛的mainlobe在损害窗口中,两个正弦信号难以区分相比矩形窗口估计。事实是,这两个估计都不是特别准确。注意,205 kHz基本上是在我们能区分200 kHz的极限。的频率,所有三个估计将无法区分两个谱组件。单独接近组件的唯一途径是拥有更大的帧大小,因此更多的NumFrequencyBands在过滤器银行估计量。

(sinegen) sinegen发布。振幅= (1 - 2);sinegen。频率= (200000 - 205000);filterBankSA。RBWSource =“属性”;filterBankSA。RBW= filterBankRBW; filterBankSA.Position = [850 375 400 450]; noiseVar = 1e-10; noiseFloor = 10*log10((noiseVar/(NumFreqBins/2))/1e-3);% -94 dBm单方面的流(“噪声地板\ n”);
噪声地板
流('噪声地板= %。2 f dBm \ n \ n”,noiseFloor);
噪声地板= -94.08 dBm
步伐= 500 *装天花板(NumFreqBins / FrameSize);t = 1:步伐x =总和(sinegen (), 2) + sqrt (noiseVar) * randn (FrameSize, 1);filterBankSA (x);rectangularSA (x);hannSA (x);结束发行版(filterBankSA)

发行版(rectangularSA)

发行版(hannSA)

检测低功率正弦组件

接下来,重新运行以前的场景,但是在170 kHz添加第三个正弦信号与一个非常小的振幅。这第三个正弦信号由矩形窗口完全错过了估计和损害窗口估计。过滤器银行估计提供了更好的分辨率和隔离的音调,这三个正弦波清晰可见。

(sinegen) sinegen发布。振幅= [1 e-5 1 2];sinegen。频率= (170000 200000 205000);noiseVar = 1 e-11;noiseFloor = 10 * log10 ((noiseVar / (NumFreqBins / 2)) / 1 e - 3);% -104 dBm单方面的流(“噪声地板\ n”);
噪声地板
流('噪声地板= %。2 f dBm \ n \ n”,noiseFloor);
噪声地板= -104.08 dBm
步伐= 500 *装天花板(NumFreqBins / FrameSize);t = 1:步伐x =总和(sinegen (), 2) + sqrt (noiseVar) * randn (FrameSize, 1);filterBankSA (x);rectangularSA (x);hannSA (x);结束发行版(filterBankSA)

发行版(rectangularSA)

发行版(hannSA)

相关的话题

外部网站