信号アナライザー
複数の信号とスペクトルの可視化および比較
説明
信号アナライザー アプリは、時間領域、周波数領域、時間-周波数領域における信号の視覚化、前処理、測定、解析、比較用の対話型ツールです。このアプリを使用して以下ができます。
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
をドラッグします。[アナライザー] タブで、信号テーブルで選択した信号について [時間値] をクリックして 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
は信号アナライザー アプリを開きます。
signalAnalyzer(sig
)
sig
)signalAnalyzer(
は信号アナライザー アプリを開き、信号 sig
)sig
をインポートしてプロットします。アプリが既に開いている場合は、現在のディスプレイで sig
がプロットされます。sig
が既にプロットされたが、変更されている場合、関数呼び出しでプロットが更新されます。
sig
はワークスペースの変数または MATLAB の式です。sig
は以下になります。
各列に独立した信号を含むベクトルまたは行列。
時間値が持続時間として指定された
timetable
。timeseries
オブジェクト。
詳細については、信号アナライザーでサポートされるデータ型を参照してください。
既定では、アプリは信号をサンプル インデックスの関数としてプロットします。時間情報を指定した場合、または信号が固有の時間情報をもつ場合、アプリは信号を時間の関数としてプロットします。
signalAnalyzer(sig1,...,sigN
)
sig1,...,sigN
)signalAnalyzer(
は、N 個の信号ベクトルまたは行列をインポートし、現在のディスプレイでプロットします。アプリは、同じ関数呼び出しによる、固有の時間情報をもつ信号と固有の時間情報をもたない信号のインポートはサポートしません。sig1,...,sigN
)
signalAnalyzer(___,'SampleRate',fs
)
fs
)signalAnalyzer(___,'SampleRate',
は、サンプル レート fs
)fs
を Hz 単位の正のスカラーとして指定します。アプリはこのサンプル レートを使用し、開始時間をゼロとして 1 つ以上の信号を時間に対してプロットします。固有の時間情報をもたない信号のサンプル レートを指定できます。
signalAnalyzer(___,'SampleTime',ts
)
ts
)signalAnalyzer(___,'SampleTime',
は、サンプル時間 ts
)ts
を秒単位の正のスカラーとして指定します。アプリはこのサンプル時間を使用し、開始時間をゼロとして 1 つ以上の信号を時間に対してプロットします。固有の時間情報をもたない信号のサンプル時間を指定できます。
signalAnalyzer(___,'StartTime',st
)
st
)signalAnalyzer(___,'StartTime',
は、信号の開始時間 st
)st
を秒単位のスカラーとして指定します。サンプル レートまたはサンプル時間を指定しない場合、アプリはサンプル レートを 1 Hz と仮定します。固有の時間情報をもたない信号の開始時間を指定できます。
signalAnalyzer(___,'TimeValues',tv
)
tv
)signalAnalyzer(___,'TimeValues',
は、時間値がデータ点に対応するベクトル tv
)tv
を指定します。tv
は秒単位の値をもつ実数の数値ベクトルとして指定できます。tv
は配列 duration
としても指定できます。tv
の値は一意で、NaN
にすることはできませんが、その間隔は均一である必要はありません。すべての入力信号は tv
と同じ長さでなければなりません。固有の時間情報をもたない信号に、時間値のベクトルを指定できます。
フィルター処理とスカログラム ビューは不等間隔サンプル信号をサポートしていません。
バージョン履歴
R2016a で導入R2024a: 欠損データを検出して埋める
データ内のギャップを検出して埋めることで、信号アナライザー アプリで信号を前処理します。欠損データは、定数値、隣接するサンプルの組み合わせ、または移動平均で埋め合わせることができます。内挿または自己回帰モデルの適用も可能です。
R2024a: オーディオ信号の再生
オーディオ再生コントロールを使用して、信号アナライザー アプリでオーディオ信号を再生します。
R2023b: より多くの種類のスペクトルの計算と比較
信号アナライザーでスペクトルを計算する際の柔軟性がさらに高まります。ウィンドウの長さ、離散フーリエ変換点の数、および分解能帯域幅を制御します。
R2023a: 信号ピークの検出と注釈付け
時間領域信号のピーク測定を実行します。信号のピーク値を [測定値] テーブルおよびディスプレイ上の注釈付きマーカーとして表示します。
R2020a: [ラベル] ボタンは信号アナライザーから削除済み
信号アナライザーが信号ラベラーを開くことはなくなりました。現在、信号ラベラーはアプリとして利用可能です。信号にラベル付けするには、MATLAB ツールストリップまたはコマンド ウィンドウから信号ラベラーを開きます。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)