このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
dlstft
説明
は、名前と値の引数を使用して追加オプションを指定します。オプションには、スペクトル ウィンドウ、FFT 長などがあります。これらの引数を前の入力構文のいずれかに追加できます。たとえば、y
= dlstft(___,Name,Value
)'DataFormat','CBT'
は、x
のデータ形式を CBT
として指定します。
例
チャープの深層学習の短時間フーリエ変換
600 Hz で 2 秒間サンプリングされた信号を生成します。この信号は、正弦関数的に変化する周波数成分をもつチャープで構成されます。
fs = 6e2; t = 0:1/fs:2; x = vco(sin(2*pi*t),[0.1 0.4]*fs,fs);
信号を、書式化されていない深層学習配列に格納します。信号の短時間フーリエ変換を計算します。サンプル時間を duration
スカラーとして入力します。(または、サンプル レートを数値スカラーとして入力します。)入力配列が 'CTB'
形式であることを指定します。
dlx = dlarray(x); [y,f,t] = dlstft(dlx,seconds(1/fs),'DataFormat','CTB');
出力を数値配列に変換します。短時間フーリエ変換の振幅を計算し、それをウォーターフォール プロットとして表示します。
y = extractdata(y); f = extractdata(f); t = seconds(t); waterfall(f,t,squeeze(abs(y))') ax = gca; ax.XDir = 'reverse'; view(30,45) ylabel('Time (s)') xlabel('Frequency (Hz)') zlabel('Magnitude')
正弦波の深層学習の短時間フーリエ変換
3 チャネル、160 サンプルの正弦波信号を 1 バッチ含む 3×160 (×1) 配列を生成します。正規化された正弦波の周波数は、 ラジアン/サンプル、 ラジアン/サンプル、および ラジアン/サンプルです。次元を順に指定して、信号を dlarray
として保存します。dlarray
は、配列の次元を、深層学習ネットワークが期待する 'CBT'
形状に並べ替えます。配列の次元サイズを表示します。
x = dlarray(cos(pi.*(1:3)'/4*(0:159)),'CTB');
[nchan,nbtch,nsamp] = size(x)
nchan = 3
nbtch = 1
nsamp = 160
信号の深層学習の短時間フーリエ変換を計算します。64 サンプルの箱型ウィンドウと、FFT 長 1024 を指定します。
[y,f,t] = dlstft(x,'Window',rectwin(64),'FFTLength',1024);
dlstft
は、'T'
次元に沿って変換を計算します。出力配列は、'SCBT'
形式です。'S'
次元は、短時間フーリエ変換の周波数に相当します。深層学習配列からデータを抽出します。
y = extractdata(y); f = extractdata(f); t = extractdata(t);
短時間フーリエ変換の振幅を計算します。振幅をチャネルごとに分けてウォーターフォール プロットにプロットします。
z = abs(squeeze(y)); for kj = 1:nchan subplot(nchan,1,kj) waterfall(f/pi,t,squeeze(z(:,kj,:))') view(30,45) end xlabel('Frequency (\times\pi rad/sample)') ylabel('Samples')
入力引数
x
— 入力配列
dlarray
オブジェクト | 数値配列
入力配列。書式化されていない dlarray
(Deep Learning Toolbox) オブジェクト、'CBT'
形式で書式化された dlarray
オブジェクト、または数値配列として指定します。x
が書式化されていない dlarray
または数値配列である場合は、'DataFormat'
に 'CBT'
をいずれかの順列で指定しなければなりません。
例: dlarray(cos(pi./[4;2]*(0:159)),'CTB')
と dlarray(cos(pi./[4;2]*(0:159))','TCB')
はどちらも、2 チャネル正弦波の 1 つのバッチ観測値を 'CBT'
形式で指定します。
fs
— サンプル レート
2π (既定値) | 正の数値スカラー
サンプル レート。正の数値スカラーとして指定します。
ts
— サンプル時間
duration
スカラー
サンプル時間。duration
スカラーとして指定します。ts
の指定は、サンプル レート fs = 1/ts
の設定と等価です。
例: seconds(1)
は、連続する信号サンプル間の 1 秒間の時間差を表す duration
スカラーです。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name
を引用符で囲みます。
例: 'Window',hamming(100),'OverlapLength',50,'FFTLength',128
は、隣接するセグメント間で 50 サンプルがオーバーラップし 128 点の FFT をもつ 100 サンプルのハミング ウィンドウを使用してデータをウィンドウ処理します。
DataFormat
— 入力データ形式
文字ベクトル | string スカラー
入力データ形式。文字ベクトルまたは string スカラーとして指定します。この引数は、x
が書式化されていない場合にのみ有効です。
この引数内の各文字は次のラベルのいずれかでなければなりません。
C
— チャネルB
— バッチ観測値T
— 時間
関数 dlstft
は、'CBT'
がどのような順列であっても受け入れます。C
、B
、T
のラベルは、それぞれ最大で 1 回指定できます。
この引数の各要素が、x
の一致する次元のラベルになります。引数がここに挙げた順序 ('C'
の後ろに 'B'
と続く順序) になっていない場合、dlstft
は、順序が一致するように引数とデータの両方を暗黙的に並べ替えます。ただし、データの格納方法は変わりません。
例: 'CBT'
Window
— スペクトル ウィンドウ
hann(128,'periodic')
(既定値) | ベクトル
スペクトル ウィンドウ。ベクトルとして指定します。ウィンドウを指定しない場合、またはウィンドウを空として指定する場合、関数は長さが 128 のハン ウィンドウを使用します。'Window'
の長さは 2 以上でなければなりません。
利用可能なウィンドウのリストについては、ウィンドウを参照してください。
例: hann(N+1)
と (1-cos(2*pi*(0:N)'/N))/2
は、いずれも長さ N
+ 1 のハン ウィンドウを指定します。
データ型: double
| single
OverlapLength
— オーバーラップするサンプルの数
ウィンドウの長さの 75%
(既定値) | 非負の整数
オーバーラップするサンプルの数。'Window'
の長さより小さな非負の整数として指定します。'OverlapLength'
を省略するか、空として指定する場合、ウィンドウの長さが 75% より少ない最大整数に設定されます。これは、既定のハン ウィンドウの 96 サンプルです。
データ型: double
| single
FFTLength
— 離散フーリエ変換 (DFT) 点の数
128
(既定値) | 正の整数
正の整数として指定する DFT 点の数。この値は、ウィンドウの長さ以上でなければなりません。入力信号の長さが DFT 長より小さい場合、データにはゼロがパディングされます。
データ型: double
| single
出力引数
y
— 短時間フーリエ変換
書式化された dlarray
オブジェクト | 書式化されていない dlarray
オブジェクト
短時間フーリエ変換。書式化された、または書式化されていない dlarray
(Deep Learning Toolbox) オブジェクトとして返されます。
x
が書式化されたdlarray
の場合、y
は'SCBT'
で書式化されたdlarray
オブジェクトになります。'S'
次元は、短時間フーリエ変換の周波数に相当します。x
が書式化されていないdlarray
または数値配列の場合、y
は書式化されていないdlarray
オブジェクトになります。y
の次元の順序は'SCBT'
です。
時間情報が指定されていない場合、STFT の計算は、'FFTLength'
が偶数であればナイキスト範囲 [0, π] で行われ、'FFTLength'
が奇数であれば [0, π) で行われます。時間情報を指定すると、計算区間はそれぞれ [0, fs/2]、[0, fs/2) となります。ここで、fs は有効なサンプル レートです。
f
— 周波数
dlarray
オブジェクト
深層学習 STFT が計算される周波数。dlarray
オブジェクトとして返されます。
入力配列に時間情報が含まれない場合、周波数は正規化された単位のラジアン/サンプルで表されます。
入力配列に時間情報が含まれる場合、
f
は Hz 単位で表される周波数を含みます。
詳細
短時間フーリエ変換
短時間フーリエ変換 (STFT) を使用して、非定常信号の周波数成分が時間の経過と共に変化する様子を解析します。STFT の振幅の 2 乗は、信号の "スペクトログラム" 時間-周波数表現と呼ばれます。スペクトログラムの詳細や、関数 Signal Processing Toolbox™ を使用したスペクトログラムの計算方法については、Signal Processing Toolbox を使用したスペクトログラムの計算を参照してください。
信号の STFT は、信号上の長さ M の "解析ウィンドウ" g(n) をスライドして、ウィンドウが適用されたデータの各セグメントの離散フーリエ変換 (DFT) を計算することによって算出されます。ウィンドウは、R サンプルの間隔で元の信号を飛び越えます。これは、隣り合ったセグメント間の L = M – R 個のサンプルのオーバーラップに相当します。ほとんどのウィンドウ関数は、スペクトル リンギングを回避するためにエッジで小さくなります。ウィンドウが適用された各セグメントの DFT は、時間と周波数の各点の振幅と位相を含む複素数値行列に対して追加されます。STFT 行列は次の列数をもちます。
ここで、Nx は信号 x(n) の長さです。⌊⌋ 記号は床関数を表します。行列内の行数は、中央変換および両側変換の場合は DFT 点の数である NDFT と同じで、実数値信号の片側変換の場合は NDFT/2 に近い奇数に等しくなります。
STFT 行列 の m 番目の列には、時間 mR 付近を中心としたウィンドウが適用されたデータの DFT が含まれます。
短時間フーリエ変換は可逆変換です。逆変換プロセスは、ウィンドウが適用されたセグメントのオーバーラップ加算により、ウィンドウ エッジでの信号の減衰を補正します。詳細については、逆短時間フーリエ変換を参照してください。
関数
istft
は、信号の STFT の逆変換を行います。特定の条件下では、信号の "完全再構成" を実現することができます。詳細については、完全再構成を参照してください。
関数
stftmag2sig
は、STFT の振幅から再構成された信号の推定を返します。
拡張機能
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は、GPU 配列を完全にサポートします。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2021a で導入R2023b: dlstft
は、変換の実数部と虚数部を単一の出力引数に結合する
R2023b 以降、dlstft
は STFT の実数部と虚数部を単一の出力引数に結合します。以前は、この関数は変換の実数部を最初の出力引数として返し、虚数部を 2 番目の出力引数として返しました。このリリース以降、この関数は 2 番目と 3 番目の出力引数として、STFT が計算される周波数と時間をそれぞれ返します。4 つの出力引数を指定した関数呼び出しはエラーになります。
R2023a 以前の元のコード | 結果 | R2023b で更新されたコード |
---|---|---|
[yr,yi] = dlstft(x); | 実行されるが、2 番目の出力引数の解釈が異なる | y = dlstft(x); yr = real(y); yi = imag(y); |
[yr,yi,f,t] = dlstft(x); | エラー | [y,f,t] = dlstft(x); yr = real(y); yi = imag(y); |
参考
オブジェクト
stftLayer
|istftLayer
|dlarray
(Deep Learning Toolbox)
関数
dlistft
|stft
|istft
|stftmag2sig
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)