主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

MATLABででのパワースペクトルの推定

时间领域信号のスペクトル(ps)とは,有限均のをに,信号内にれいるパワーを数上に含ましたです。信号ものです。信号の周波。ががであるであるであるがありありますます。ノイズキャンセリングやシステムといったといった多重く信号监位アプリケーション,周波数に特化した信号修にスペクトルててます。信号を关键词无关紧要。たとえばとして使使れ,时间领域解析れれにづいて推定れ解析にて推定がわにづいて推定れれに。たとえば,一般的なパラメトリックパラメトリック法で,観测値を自己回帰モデルにさせますピリオドグラムにはさはピリオドグラムピリオドグラムですは,ウェルチ法やバンクバンクフーリエ変やを使使使ををますますてされます。比较长さが短い信号表号利用方法のについてはがーます伴い伴い伴います。光谱分析を参照してください。最大エントロピー法のようなその他の手法を使用することもできます。

MATLAB®ではdsp.spectrumanalyzer.系统对象™を使用して動的な信号のリアルタイムスペクトル解析を実行することができます。オブジェクト関数isNewDataReadyおよびgetSpectrumDataあるいは,そのデータをてに,そのデータをスペクトルに表示,dsp。S.P.E.CT.R.你M.Estimator系统对象を使用した後でdsp.arrayplot.オブジェクトを使用することでスペクトルデータを表示することもできます。dsp。S.P.E.CT.R.你M.Estimatorオブジェクトの出力はスペクトルデータです。このデータを取得して,その後の処理で使用できます。

DSP.SpectRumanalyzerを使用したパワースペクトル推定推定

信号のパワースペクトルを表示するには,dsp.spectrumanalyzer.系统对象™を使用できます。入力信号のダイナミクスを変更して,その変更が信号のパワースペクトルに与える影響をリアルタイムに確認することができます。

初期化

正弦波ソースを初期化して正弦波とスペクトルアナライザーを生成し,信号のパワースペクトルを表示します。入力正弦波は2つの周波数(1つは1000 Hz,もう1つは5000 Hz)をもちます。2つのdsp。S.一世N.E.W.一种veオブジェクトを作用成します.1つは1000 hz正弦波生成し,もう1つは5000 hz正弦波生成するオブジェクト。

FS = 44100;sineObject1 = dsp.sinewave('samplesperframe', 1024,“PhaseOffset”10...“SampleRate”,fs,'频率', 1000);Sineobject2 = dsp。SineWave ('samplesperframe', 1024,...“SampleRate”,fs,'频率',5000);sa = dsp.spectrumanalyzer(“SampleRate”,fs,“方法”滤波器组的...“SpectrumType”“权力”“PlotAsTwoSidedSpectrum”,错误的,...“ChannelNames”,{'输入的功率谱'},'ylimits',[ -  120 40],'ShowLegend',真正的);

スペクトルアナライザーはフィルターバンクアプローチを使用して,信号のパワースペクトルを計算します。

推定

ストリーミングを行い,信号のパワースペクトルを推定します。为了ループを作成して5000回の反復を実行します。各反復では,各正弦波の1024サンプル(1フレーム)をストリーミングして,各フレームのパワースペクトルを計算します。入力信号を生成するために,2つの正弦波を追加します。結果として得られる信号は2つの周波数(1つは1000 Hz,もう1つは5000 Hz)をもつ正弦波です。ゼロ平均,標準偏差0.001のガウスノイズを付加します。その後の処理で使用するスペクトルデータを取得するには,オブジェクト関数isNewDataReadyおよびgetSpectrumDataを使用します。変数数据には,スペクトルに関する追加の統計と共にスペクトルアナライザーに表示されるスペクトルデータが含まれています。

数据= [];为了Iter = 1:7000 sininewave1 = sinineobject1 ();Sinewave2 = Sineobject2 ();Input = Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);SA(NoisyInput);如果SA。一世S.NewDataReady data = [data;getSpectrumData(SA)];结尾结尾释放(SA);

スペクトルアナライザーの出力では,2つの明確なピーク(1つは1000 Hz,もう1つは5000 Hz)を確認できます。

分解能帯域幅(RBW)はスペクトルアナライザーによって分解できる最小の周波数帯域幅です。既定では,dsp.spectrumanalyzer.オブジェクトのRBWSourceプロパティは汽车にに设定されますモードモードで,rbwは周波数号1024の比率です。両侧両侧では,このでは$ \ frac {f_ {s}} {1024} $ですが,片侧スペクトルでは$ \ frac {\ frac {f_ {s}} {2}} {1024} $です。この例のスペクトルアナライザーは片側スペクトルを示しています。そのため,RBWは(44100/2)/ 1024,つまり21.53赫兹です。

$ rbw $のこの値を使使使用すると,1つのスペクトルの更新を计算するのに必要な力$ n_ {samples} $は,次の式で求められます。美元N_{样本}= \压裂f s {} {} {RBW} $

この例では,$ n_ {samples} $は44100/ 21.53,つまり2048サンプルです。

'自动'モードモードで计算计算れれ$ rbw $は,适切な周波数分解能提供します。

表示される2つののののをには,2つの周波数号のが少なくとも少なくともでなければなりん。このこのではなり。$ rbw $より大厦4000 Hzです。そのため,ピークをはっきりと确认ことができます.2番目の正弦波のを1015 hzに変更し.2つの周波与数码の差は$ rbw $より小さくなっています。

释放(Sineobject2);sineObject2.frequency = 1015;为了Iter = 1:50 000 sininewave1 = sinineobject1 ();Sinewave2 = Sineobject2 ();Input = Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);SA(NoisyInput);结尾释放(SA);

ピークは区别できません。

周波数分解能を向上させるには,$ rbw $を1 Hzまでます。

sa.rbwsource ='财产';SA。R.B.W.=1;为了Iter = 1:50 000 sininewave1 = sinineobject1 ();Sinewave2 = Sineobject2 ();Input = Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);SA(NoisyInput);结尾释放(SA);

ズームすると15赫兹離れている2つのピークを区別できるようになりました。

周波数分を,时间分别分享时分分别。RBWSourceプロパティを汽车に変更します。

ストリーミング中に,入力のプロパティスペクトルアナライザーのプロパティ変更してたとえばアナライザーのに确认ことができ影响即座即座にが确认ことができことができことができを即座インデックスががことができことができことができを即座がががにに倍であるときときににに倍であるときときにににであるであるときときににの倍であるときときににの正弦波の周波数を変更します。

释放(Sineobject2);sa.rbwsource =“汽车”为了Iter = 1:50 000 sininewave1 = sinineobject1 ();如果(mod(Iter,1000) == 0)释放(Sineobject2);Sineobject2。FR.E.问:你E.N.Cy=Iter; Sinewave2 = Sineobject2();别的sinewave2 = sineObject2();结尾Input = Sinewave1 + Sinewave2;NoisyInput = Input + 0.001*randn(1024,1);SA(NoisyInput);结尾释放(SA);

ストリーミングループの実行,2番目の正当波のが反复値値従って変ことことをできますますにことををできます。同様同様,シミュレーションの実确认できスペクトルアナライザーのの任意プロパティをしてててて,それそれにするする出のてのててて対応する出ののを确认できます。

単位间のパワーの変换

スペクトルアナライザーでは,パワースペクトル密度を指定するための次の3つの単位が提供されています。[瓦特/赫兹](dBm / Hz),および[dbw / hz]。対応するパワーの単位は[瓦特][DBM],および(瓦分贝)です。电气工学アプリケーションアプリケーションで,信号のrmsを(Vrms)または(伏特分贝)で表示することもできます。既定のスペクトルタイプは[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. M. = 10 日志 10 P. O. W. E. R. 一世 N. W. 一种 T. T. / 1 M. 一世 L. L. 一世 W. 一种 T. T. 的)

振幅が1 Vの正弦波信号の場合,[瓦特]単位での片側スペクトルのパワーは次で求められます。

P. W. 一种 T. T. S. = 一种 2 / 2 P. W. 一种 T. T. S. = 1 / 2

この例では,このパワーは0.5 Wに等しくなります。対応するdBm単位のパワーは次で求められます。

P. D. B. M. = 10 日志 10 P. O. W. E. R. 一世 N. W. 一种 T. T. / 1 M. 一世 L. L. 一世 W. 一种 T. T. 的) P. D. B. M. = 10 日志 10 0.5 / 10 3. 的)

ここで,パワーは26.9897 dBmに等しくなります。ピークの検出でこの値を確認するには,[ツール][測定値][ピークピークの]をクリックします。

ホワイトノイズ信号の場合,スペクトルはすべての周波数でフラットになります。この例のスペクトルアナライザーは,[0 f / 2]の範囲の片側スペクトルを表示します。分散1军医のホワイトノイズ信号の場合,単位帯域幅あたりのパワー(PUnitaBandWidth.1)は军医です。周波数範囲全体でのワット単位のホワイトノイズの合计パワーは次で求められます。

P. W. H 一世 T. E. N. O. 一世 S. E. = P. N. 一世 T. B. 一种 N. D. W. 一世 D. T. H * N. M. B. E. R. O. F F R. E. 问: E. N. C y B. 一世 N. S. P. W. H 一世 T. E. N. O. 一世 S. E. = 10 4. 的) * F S. / 2 R. B. W. 的) P. W. H 一世 T. E. N. O. 一世 S. E. = 10 4. 的) * 22050 21.53 的)

周波数ビンの数は,全帯域幅のRBWに対する比率です。片側スペクトルの場合,全帯域幅はサンプリングレートの半分です。この例のRBWは21.53赫兹です。これらの値を使用すると,ワット単位でのホワイトノイズの合計パワーは0.1024 Wです。dBm単位では,ホワイトノイズのパワーは10 * log10(0.1024 / 10 ^ -3)を使用して計算することができ,20.103 dBmに等しくなります。

ワット単位からdBFS単位へのパワーの変換

スペクトル単位を[dbfs]に設定し,フルスケール(FullScaleSource)を(汽车)に設定すると,[dbfs]単位のパワーは次のように计算されます。

P. D. B. F S. = 20. 日志 10 P. W. 一种 T. T. S. / F L. L. _ S. C 一种 L. E. 的)

。ここここでははののとおりとおり

  • P.瓦特はワット単位のパワー。

  • 双および浮动の信号では,Full_Scaleは入力信号の最大値。

  • 固定小数点または整数の信号では,Full_Scaleは表现できる最大の値。

手動のフルスケールを指定した場合(FullScaleSource[财产]に设定),[dbfs]単位のパワーは次で求められます。

P. F S. = 20. 日志 10 P. W. 一种 T. T. S. / F S. 的)

ここで,FS.全档プロパティで指定されたフルスケーリング系数です。

振幅が1 Vの正弦波信号の場合,[瓦特]単位での片側スペクトルのパワーは次で求められます。

P. W. 一种 T. T. S. = 一种 2 / 2 P. W. 一种 T. T. S. = 1 / 2

この例では,このパワーは0.5 wに等しく,正弦波の毛大大力信号は1 vです。

P. F S. = 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単位のパワーからvrms単位のrmsへの変换

[DBM]単位のパワーは次で求められます。

P. D. B. M. = 10 日志 10 P. O. W. E. R. 一世 N. W. 一种 T. T. / 1 M. 一世 L. L. 一世 W. 一种 T. T. 的)

RMSの電圧は次で求められます。

V. R. M. S. = 10 P. D. B. M. / 20. 10 3.

前の例では,PdBmは26.9897dbmと同等です.vrms.は次のように計算されます。

V. R. M. S. = 10 26.9897 / 20. 0.001

0.7071と等しくなります。

この値を确认するには,次を行います。

  1. [タイプ](RMS)に変更します。

  2. [ツール][測定値][ピークピークの]をクリックして,ピークの検出を開きます。

dsp。S.P.E.CT.R.你M.Estimator を使用したパワー スペクトルの推定

あるいはdsp。S.P.E.CT.R.你M.Estimator系统对象を使用して信号のパワースペクトルを計算することもできます。スペクトル推定器の出力を取得してデータを保存し,その後の処理で使用することができます。估计ライブラリ内の他のオブジェクトを表示するには,MATLAB®コマンドプロンプトで帮助DSP.と入力して估计をクリックします。

初期化

dsp.spectrumanalyzer.の使用に関する前の節と同じソースを使って,パワースペクトルを推定します。入力正弦波は2つの周波数(1つは1000 Hz,もう1つは5000 Hz)をもちます。dsp。S.P.E.CT.R.你M.Estimatorを初期化し,フィルターバンクアプローチを使用して信号のパワースペクトルを计算します。dsp.arrayplot.オブジェクトを使用して信号のパワースペクトルを表示します。

FS = 44100;sineObject1 = dsp.sinewave('samplesperframe', 1024,“PhaseOffset”10...“SampleRate”,fs,'频率', 1000);Sineobject2 = dsp。SineWave ('samplesperframe', 1024,...“SampleRate”,fs,'频率',5000);spolest = dsp.spectrumestimator(“方法”滤波器组的...'PowerUnit''dbm'“SampleRate”,fs,“FrequencyRange”'片面');arrplot = dsp.arrayplot('plottype''线'“ChannelNames”,{'输入的功率谱'},...'ylimits',[ -  80 30],'xlabel'“每帧样本数目”“YLabel”...“权力(dBm)”“标题”'单面功率谱相对于样本');

推定

ストリーミングを行い,信号のパワースペクトルを推定します。为了ループを作物して,5000回の反复を実します。各各では,各正弦波の1024サンプル(1フレーム)ををして,各フレームのパワーを计算しゼロ平等,标准偏差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 / FrameLength美元に設定し,[xオフセット]を0に設定します。

  • 両側スペクトルの場合-[メイン]タブで,(增量样本)Fs / FrameLength美元に設定し,[xオフセット]- f / 2美元に設定します。

この例では,スペクトルは片侧であるため,(增量样本)[xオフセット]はそれぞれ44100/1024と0に設定されます。周波数をkHz単位で指定するには,(增量样本)を44.1/1024に設定します。

ArrPlot。S.一种M.P.L.E.Increment = (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。S.P.E.CT.R.你M.Estimator。

关键词する