主要内容

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

ストリーミング信号の統計

この例では,MATLAB®コマンドラインで使用可能なDSP系统工具箱™の機能を使用して,入力データストリームの統計測定を実行する方法を示します。信号の統計,最小値,最大値,平均値,分散,ピークと平方根平均二乗および信号のパワースペクトル密度を計算してプロットします。

はじめに

この例ではDSP系统工具箱对象を使用して信号統計を計算します。これらのオブジェクトは状態を自動的に処理するため,状態の更新に必要なコードの量が減り,コード作成時のエラーの低減につながります。

これらの系统对象は処理で使用される多くの値を事前に計算します。これはループ内の同じプロパティの信号を処理する場合に大変便利です。たとえば,スペクトル推定アプリケーションでFFTを計算する場合,入力のプロパティがわかっていれば正弦値および余弦値を計算して保存しておき,以降の呼び出しでこれらの値を再利用することができます。また,オブジェクトは入力プロパティが各呼び出しの以前の入力と同じタイプのプロパティかどうかのみを確認します。

初期化

ここではコードに使用されている一部の変数を初期化し,処理に使用される系统对象をインスタンス化します。これらのオブジェクトは必要な変数またはテーブルも事前に計算するため,ループ内で以降の呼び出しを効率よく処理できます。

frameSize = 1024;%在一个循环中要处理的一个信号块的大小Fs = 48 e3;%采样率numFrames = 100;要处理的帧数

この例の入力信号は,ローパス冷杉フィルターを通して渡されるホワイトガウスノイズです。ノイズ信号をフィルター処理するために使用される冷杉フィルター系统对象を作成します。

冷杉= dsp。FIRFilter (“分子”fir1(32。3));

スペクトル推定器系统对象を作成して,入力のパワースペクトル密度を推定します。

spect = dsp。SpectrumEstimator (“SampleRate”Fs,...“SpectrumType”的功率密度...“FrequencyRange”“单向的”...“窗口”“皇帝”);

平均値,分散,ピークと平方根平均二乗間,最大値および最小値を計算する系统对象を作成し,これを実行モードに設定します。これらのオブジェクトは,統計系统对象のサブセットとして本製品で利用できます。実行モードでは,現在の入力の統計だけでなく,過去の全体にわたる入力の統計を計算します。

runMean = dsp。MovingAverage (“SpecifyWindowLength”、假);runVar = dsp。MovingVariance (“SpecifyWindowLength”、假);runPeaktoRMS = dsp。PeakToRMS (“RunningPeakToRMS”,真正的);runMin = dsp。MovingMinimum (“SpecifyWindowLength”、假);runMax = dsp。MovingMaximum (“SpecifyWindowLength”、假);

統計とスペクトルの可視化に使用されるスコープ系统对象を初期化します。

meanScope = timescope (“SampleRate”Fs,...“TimeSpanSource”“属性”...“时间间隔”numFrames * frameSize / Fs,...“标题”“移动平均”...“YLabel”“的意思是”...“YLimits”、(-0.1 1。)...“位置”,[43 308 420 330]);p2rmsScope = timescope (“SampleRate”Fs,...“TimeSpanSource”“属性”...“时间间隔”numFrames * frameSize / Fs,...“标题”“运行Peak-To-RMS”...“YLabel”“Peak-To-RMS”...“YLimits”, [0 5),...“位置”,[480 308 420 330]);minmaxScope = timescope (“SampleRate”Fs,...“TimeSpanSource”“属性”...“时间间隔”numFrames * frameSize / Fs,...“ShowGrid”,真的,...“标题”...“运行最小和最大信号”...“YLabel”信号幅度的...“YLimits”3 [3],...“位置”,[43 730 422 330]);spectrumScope = dsp。ArrayPlot (“SampleIncrement”....5 * Fs/(frameSize/2 + 1),...“PlotType”“行”...“标题”的功率谱密度...“包含”的频率(赫兹)...“YLabel”“功率/频率(dB / Hz)”...“YLimits”(-120 -30),...“位置”,[475 730 420 330]);

ストリーム処理ループ

ここで、系统对象を使用して,ホワイトガウスノイズをフィルター処理してその平均値,分散,ピークと平方根平均二乗間,最小値,最大値およびスペクトルを計算する処理ループを呼び出します。

系统对象がループの内部で呼び出されることに注意してください。入力データプロパティは変わらないため,ここでオブジェクトを再利用できます。これにより,メモリ使用量が軽減します。

我= 1:numFrames通过FIR滤波器的高斯白噪声sig =冷杉(randn (frameSize 1));%计算功率谱密度ps = spect(团体);% runMean System对象跟踪关于过去的信息%的样本,并给出到目前为止达到的平均值。相同的是% true用于runMin和runMax系统对象。meanval = runMean(团体);方差= runVar(sig);peak2rms = runPeaktoRMS(团体);最小=运行最小(sig);最大= runMax(团体);%绘制您处理过的数据minmaxScope((团体、最小、最大));spectrumScope (10 * log10 (ps));meanScope (meanval);p2rmsScope (peak2rms);结束释放(minmaxScope);释放(spectrumScope);释放(meanScope);释放(p2rmsScope);

まとめ

コードでは,適切な入力引数を使用して連続する系统对象の呼び出しだけが行われ,統計を計算するのにインデックスやカウンターなどの変数の維持を必要としないことを視覚的に確認しました。このため,コード作成が短時間で済み,エラーもなくなります。オブジェクト内の定数変数を事前に計算することで,一般に処理時間が短縮されます。