信号アナライザー
複数の信号とスペクトルの可視化および比較
説明
信号アナライザー アプリは、時間領域、周波数領域、時間-周波数領域における信号の視覚化、前処理、測定、解析、比較用の対話型ツールです。このアプリを使用して以下ができます。
MATLAB® ワークスペース内のすべての信号への容易なアクセス。
アプリを起動したままの状態での、欠損データの補完 (R2024a 以降)、および信号の平滑化、フィルター処理、リサンプリング、トレンド除去、ノイズ除去、抽出、編集。
カスタム前処理関数の追加および適用。
オーディオ信号の再生。 (R2024a 以降)
複数の信号の波形、スペクトル、パーシステンス、スペクトログラム、およびスカログラム表現の可視化および比較の同時実行。
データおよび信号統計の測定。
信号アナライザー アプリを使用すると、持続時間が異なる多数の信号を同じビュー内で同時に扱うことができます。
詳細については、信号アナライザー アプリの使用を参照してください。
スカログラム ビューを使用したり、信号にウェーブレット ノイズ除去を適用したりするには、Wavelet Toolbox™ のライセンスが必要です。
信号アナライザー アプリを開く
MATLAB ツールストリップ: [アプリ] タブの [信号処理と通信] でアプリのアイコンをクリックします。
MATLAB コマンド プロンプト:
signalAnalyzerと入力します。
例
でサンプリングされた音声信号を読み込みます。ファイルには、"MATLAB®" という単語を発声している女性の録音音声が含まれています。
load mtlbオーディオ データの 70% が欠落している状況をシミュレートするには、信号に NaN 値をランダムに割り当てます。
rng(2024) numToReplace = round(length(mtlb) * 0.70); missing = randperm(length(mtlb),numToReplace); mtlbMissing = mtlb; mtlbMissing(missing) = NaN;
信号アナライザーを開いて、[ワークスペース ブラウザー] ペインから mtlb 変数と mtlbMissing 変数を [信号をフィルター] テーブルにドラッグします。2 つの信号を選択します。[アナライザー] タブで、[時間値] をクリックし、Sample Rate and Start Time を選択します。[サンプル レート] を Fs Hz、[開始時間] を 0 秒として指定します。[グリッドの表示] をクリックして、2 つのディスプレイを並べて作成します。mtlb を左側のディスプレイにプロットし、mtlbMissing を右側のディスプレイにプロットします。オーディオ信号を聞くには、mtlb オーディオ信号を選択し、[表示] タブのツールストリップの [再生] セクションで [再生] をクリックします。信号を繰り返す場合は、再生する前に [ループ再生] を選択します。

欠損データのある信号を選択し、[アナライザー] タブの [前処理] をクリックして前処理モードに入り、前処理オプションのリストから Fill Missing を選択します。[関数パラメーター] パネルを使用して、Fill Missing パラメーターを調整します。Autoregressive model を選択し、[適用] をクリックして、信号の欠損を埋めます。[すべて確定] をクリックして前処理結果を保存し、モードを終了します。代替の埋め込み関数の詳細については、fillmissingおよびfillgapsを参照してください。

[再生] ボタンを使用して、埋めた信号を再生できるようになりました。欠損データを埋めることによる効果をスペクトログラム上で確認するには、[表示] タブで [時間-周波数] をクリックします。[スペクトログラム] タブで、20 ms の時間分解能を指定し、隣接するセグメント間のオーバーラップとして 80% を指定します。[パワーの範囲] を –50 dB と –10 dB に設定します。左側の表示をクリックして、この手順を繰り返します。

解析ウィンドウのスペクトル漏れを調整して、"信号アナライザー" で正弦波を分解できます。
100Hz で 2 秒間サンプリングされた 2 チャネルの信号を生成します。
最初のチャネルは、20Hz トーンと 21Hz トーンで構成されます。どちらのトーンにも単位振幅があります。
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 つのディスプレイすべてにドラッグします。

[スペクトル] タブをクリックして、各ディスプレイのスペクトル ビューを変更します。
左上のディスプレイをクリックして選択します。漏れの値が 32 になるまで [漏れ] スライダーを動かします。
右上のディスプレイをクリックして選択します。[分解能タイプ] セクションで [ウィンドウの長さ] を選択します。[ウィンドウの長さ] セクションで、[指定] を選択し、ウィンドウの長さを 1500 サンプルに指定します。[ウィンドウ オプション] セクションで、
Rectangularウィンドウを選択し、オーバーラップ率 20 を指定します。左下のディスプレイをクリックして選択します。[分解能タイプ] セクションで [ウィンドウの長さ] を選択します。[ウィンドウの長さ] セクションで、[指定] を選択し、ウィンドウの長さを 500 サンプルに指定します。[ウィンドウ オプション] セクションで、
Hammingウィンドウを選択し、オーバーラップ率 50 を指定します。[NFFT] セクションで、離散フーリエ変換点を 550 に指定します。右下のディスプレイをクリックして選択します。[分解能タイプ] セクションで [ウィンドウの長さ] を選択します。[ウィンドウの長さ] セクションで、[指定] を選択し、ウィンドウの長さを 5000 サンプルに指定します。[ウィンドウ オプション] セクションで、
Chebyshevウィンドウを選択し、サイドローブの減衰を 50 dB、オーバーラップ率を 90 に指定します。
分解能は高いが漏れが多いビューもあれば、漏れは少ないが分解能が低いビューもあることがわかります。

関連する例
プログラムでの使用
signalAnalyzer は信号アナライザー アプリを開きます。
signalAnalyzer( は信号アナライザー アプリを開き、信号 sig)sig をインポートしてプロットします。アプリが既に開いている場合は、現在のディスプレイで sig がプロットされます。sig が既にプロットされたが、変更されている場合、関数呼び出しでプロットが更新されます。
sig はワークスペースの変数または MATLAB の式です。sig は以下になります。
各列に独立した信号を含むベクトルまたは行列。
時間値が持続時間として指定された
timetable。timeseriesオブジェクト。
詳細については、信号アナライザーでサポートされるデータ型を参照してください。
既定では、アプリは信号をサンプル インデックスの関数としてプロットします。時間情報を指定した場合、または信号が固有の時間情報をもつ場合、アプリは信号を時間の関数としてプロットします。
signalAnalyzer( は、N 個の信号ベクトルまたは行列をインポートし、現在のディスプレイでプロットします。アプリは、同じ関数呼び出しによる、固有の時間情報をもつ信号と固有の時間情報をもたない信号のインポートはサポートしません。sig1,...,sigN)
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 で導入データ内のギャップを検出して埋めることで、信号アナライザー アプリで信号を前処理します。欠損データは、定数値、隣接するサンプルの組み合わせ、または移動平均で埋め合わせることができます。内挿または自己回帰モデルの適用も可能です。
オーディオ再生コントロールを使用して、信号アナライザー アプリでオーディオ信号を再生します。
信号アナライザーでスペクトルを計算する際の柔軟性がさらに高まります。ウィンドウの長さ、離散フーリエ変換点の数、および分解能帯域幅を制御します。
時間領域信号のピーク測定を実行します。信号のピーク値を [測定値] テーブルおよびディスプレイ上の注釈付きマーカーとして表示します。
信号アナライザーが信号ラベラーを開くことはなくなりました。現在、信号ラベラーはアプリとして利用可能です。信号にラベル付けするには、MATLAB ツールストリップまたはコマンド ウィンドウから信号ラベラーを開きます。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)