Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

信号アナライザー

複数の信号とスペクトルの可視化および比較

説明

信号アナライザー アプリは、時間領域、周波数領域、時間-周波数領域における信号の視覚化、前処理、測定、解析、比較用の対話型ツールです。このアプリを使用して以下ができます。

  • MATLAB® ワークスペース内のすべての信号への容易なアクセス

  • アプリを離れることなく、信号の平滑化、フィルター処理、リサンプリング、トレンド除去、ノイズ除去、複製、抽出、名前変更、または編集

  • カスタム前処理関数の追加および適用

  • 複数の信号波形、スペクトル、パーシステンス、スペクトログラム、およびスカログラム表現の可視化および比較の同時実行

  • データおよび信号統計の測定

信号アナライザー アプリを使用すると、持続時間が異なる多数の信号を同じビュー内で同時に扱うことができます。

詳細については、信号アナライザー アプリの使用を参照してください。

  • スカログラム ビューを使用したり、信号にウェーブレット ノイズ除去を適用したりするには、Wavelet Toolbox™ のライセンスが必要です。

Signal Analyzer app

信号アナライザー アプリを開く

  • MATLAB ツールストリップ: [アプリ] タブの [信号処理と通信] でアプリのアイコンをクリックします。

  • MATLAB コマンド プロンプト: signalAnalyzer と入力します。

すべて展開する

解析ウィンドウのスペクトル漏れを調整して、"信号アナライザー" で正弦波を分解できます。

100Hz で 2 秒間サンプリングされた 2 チャネルの信号を生成します。

  1. 最初のチャネルは、20Hz トーンと 21Hz トーンで構成されます。どちらのトーンにも単位振幅があります。

  2. 2 番目のチャネルも 2 つのトーンをもちます。1 つのトーンは単位振幅および 20Hz の周波数をもちます。もう 1 つのトーンは 1/100 の振幅および 30Hz の周波数をもちます。

fs = 100;

t = (0:1/fs:2-1/fs)';

x = sin(2*pi*[20 20].*t)+[1 1/100].*sin(2*pi*[21 30].*t);

ホワイト ノイズに信号を組み込みます。40 dB の S/N 比を指定します。

x = x + randn(size(x)).*std(x)/db2mag(40);

"信号アナライザー" を開いて信号をプロットします。[アナライザー] タブで、信号テーブルで選択した信号について [時間値] をクリックして Sample Rate and Start Time を選択します。[サンプル レート]fs Hz、[開始時間]0 秒として指定します。[表示] タブの [スペクトル] をクリックして、ディスプレイにスペクトル プロットを追加します。

[スペクトル] タブをクリックします。スペクトル漏れを制御するスライダーは、中央の位置にあり、分解能帯域幅の約 1.28 Hz に相当します。1 番目のチャネルの 2 つのトーンは、分解されていません。2 番目のチャネルの 30Hz トーンは、他のトーンよりもかなり弱いにもかかわらず表示されています。

分解能帯域幅がおよそ 0.83 Hz になるように漏れを増やします。2 番目のチャネルの弱いトーンは、明確に分解されます。

スライダーを最大値に移動します。分解能帯域幅はおよそ 0.5Hz です。1 番目のチャネルの 2 つのトーンは、分解されています。2 番目のチャネルの弱いトーンは、大きいウィンドウのサイドローブによってマスクされています。

[表示] タブをクリックします。水平方向のズームを使用して周波数軸を拡大します。ディスプレイに 2 つのカーソルを追加して周波数領域のカーソルをドラッグし、トーンの周波数を推定します。

電子歯ブラシの音声録音を MATLAB® に読み取ります。信号は 48 kHz でサンプリングされています。歯ブラシは約 1.75 秒で電源が入り、約 2 秒間持続します。

[y,fs] = audioread("toothbrush.m4a");

信号アナライザーを開いて、"ワークスペース ブラウザー" から信号テーブルに信号をドラッグします。信号テーブルでそれを選択し、[アナライザー] タブで [時間値] をクリックすることで、信号に時間情報を追加します。Sample Rate and Start Time を選択して、サンプル レートに fs を入力します。

[表示] タブで [グリッドの表示] をクリックして、2 行 2 列のグリッドの表示を作成します。各ディスプレイを選択し、[スペクトル] をクリックしてスペクトル ビューを追加し、[時間] をクリックして時間ビューを削除します。信号を 4 つのディスプレイすべてにドラッグします。

[スペクトル] タブをクリックして、各ディスプレイのスペクトル ビューを変更します。

  1. 左上のディスプレイをクリックして選択します。漏れの値が 32 になるまで [漏れ] スライダーを動かします。

  2. 右上のディスプレイをクリックして選択します。[分解能タイプ] セクションで [ウィンドウの長さ] を選択します。[ウィンドウの長さ] セクションで、[指定] を選択し、ウィンドウの長さを 1500 サンプルに指定します。[ウィンドウ オプション] セクションで、Rectangular ウィンドウを選択し、オーバーラップ率 20 を指定します。

  3. 左下のディスプレイをクリックして選択します。[分解能タイプ] セクションで [ウィンドウの長さ] を選択します。[ウィンドウの長さ] セクションで、[指定] を選択し、ウィンドウの長さを 500 サンプルに指定します。[ウィンドウ オプション] セクションで、Hamming ウィンドウを選択し、オーバーラップ率 50 を指定します。[NFFT] セクションで、離散フーリエ変換点を 550 に指定します。

  4. 右下のディスプレイをクリックして選択します。[分解能タイプ] セクションで [ウィンドウの長さ] を選択します。[ウィンドウの長さ] セクションで、[指定] を選択し、ウィンドウの長さを 5000 サンプルに指定します。[ウィンドウ オプション] セクションで、Chebyshev ウィンドウを選択し、サイドローブの減衰を 50 dB、オーバーラップ率を 90 に指定します。

分解能は高いが漏れが多いビューもあれば、漏れは少ないが分解能が低いビューもあることがわかります。

関連する例

プログラムでの使用

すべて展開する

signalAnalyzer信号アナライザー アプリを開きます。

signalAnalyzer(sig)信号アナライザー アプリを開き、信号 sig をインポートしてプロットします。‎アプリが既に開いている場合は、現在のディスプレイで sig がプロットされます。sig が既にプロットされたが、変更されている場合、関数呼び出しでプロットが更新されます。

sig はワークスペースの変数または MATLAB の式です。sig は以下になります。

  • 各列に独立した信号を含むベクトルまたは行列。

  • 時間値が持続時間として指定された timetable

  • timeseries オブジェクト。

詳細については、信号アナライザーでサポートされるデータ型を参照してください。

既定では、アプリは信号をサンプル インデックスの関数としてプロットします。時間情報を指定した場合、または信号が固有の時間情報をもつ場合、アプリは信号を時間の関数としてプロットします。

signalAnalyzer(sig1,...,sigN) は、N 個の信号ベクトルまたは行列をインポートし、現在のディスプレイでプロットします。アプリは、同じ関数呼び出しによる、固有の時間情報をもつ信号と固有の時間情報をもたない信号のインポートはサポートしません。

signalAnalyzer(___,'SampleRate',fs) は、サンプル レート fs を Hz 単位の正のスカラーとして指定します。アプリはこのサンプル レートを使用し、開始時間をゼロとして 1 つ以上の信号を時間に対してプロットします。固有の時間情報をもたない信号のサンプル レートを指定できます。

signalAnalyzer(___,'SampleTime',ts) は、サンプル時間 ts を秒単位の正のスカラーとして指定します。アプリはこのサンプル時間を使用し、開始時間をゼロとして 1 つ以上の信号を時間に対してプロットします。固有の時間情報をもたない信号のサンプル時間を指定できます。

signalAnalyzer(___,'StartTime',st) は、信号の開始時間 st を秒単位のスカラーとして指定します。サンプル レートまたはサンプル時間を指定しない場合、アプリはサンプル レートを 1 Hz と仮定します。固有の時間情報をもたない信号の開始時間を指定できます。

signalAnalyzer(___,'TimeValues',tv) は、時間値がデータ点に対応するベクトル tv を指定します。tv は秒単位の値をもつ実数の数値ベクトルとして指定できます。tv は配列 duration としても指定できます。tv の値は一意で、NaN にすることはできませんが、その間隔は均一である必要はありません。すべての入力信号は tv と同じ長さでなければなりません。固有の時間情報をもたない信号に、時間値のベクトルを指定できます。

フィルター処理とスカログラム ビューは不等間隔サンプル信号をサポートしていません。

バージョン履歴

R2016a で導入

すべて展開する