ヘルプ センターヘルプ センター
gpuArray
このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
逆フーリエ シンクロスクイーズド変換
x = ifsst(s)
x = ifsst(s,window)
x = ifsst(s,window,f,freqrange)
x = ifsst(s,window,iridge)
x = ifsst(s,window,iridge,'NumFrequencyBins',nbins)
例
x = ifsst(s) は、s の逆フーリエ シンクロスクイーズド変換を返します。x は s の時間-周波数平面全体を使用して再構成されます。
x
s
x = ifsst(s,window) は、window を使用してフーリエ シンクロスクイーズド変換が計算される信号を再構成します。
window
x = ifsst(s,window,f,freqrange) は、freqrange 内の周波数 f でサンプリングされたと仮定して、逆シンクロスクイーズド変換を行います。逆シンクロスクイーズド変換は、周波数が freqrange 内の s のビンについて行われます。
f
freqrange
x = ifsst(s,window,iridge) は、インデックス ベクトルまたは行列 iridge で指定される時間-周波数リッジに沿って、逆シンクロスクイーズド変換を行います。iridge が行列の場合、ifsst はまず iridge の最初の列に沿って逆変換を行い、次に後続の列に沿って反復して進みます。出力は、iridge と同じサイズのベクトルまたは行列です。
iridge
ifsst
x = ifsst(s,window,iridge,'NumFrequencyBins',nbins) は、iridge のインデックス近傍の周波数ビンの数を指定して、再構成に使用します。
nbins
すべて折りたたむ
Fs=7418Hz でサンプリングされた音声信号を読み込みます。ファイルには、"MATLAB®" という単語を発声している女性の録音音声が含まれています。信号のフーリエ シンクロスクイーズド変換を計算します。
load mtlb % To hear, type sound(mtlb,Fs) [sst,f] = fsst(mtlb,Fs);
逆変換を行い、信号を再構成します。元の信号、再構成した信号およびこれらの差分をプロットします。
xrec = ifsst(sst); t = (0:length(mtlb)-1)/Fs; plot(t,mtlb,t,xrec,t,mtlb-xrec) xlabel('Time (s)') legend('Original','Reconstructed','Difference')
再構成の精度を確認するために、元の信号と逆変換との差の ℓ∞ ノルムを計算します。
Linf = norm(abs(mtlb-xrec),Inf)
Linf = 1.9762e-14
% To hear, type sound(mtlb-xrec,Fs)
1024 Hz で 2 秒間サンプリングされた信号を生成します。
nSamp = 2048; Fs = 1024; t = (0:nSamp-1)'/Fs;
最初の 1 秒間、信号は 400 Hz の正弦波と凹の 2 次チャープで構成されています。開始および終了時の周波数が 250 Hz で、最小でも 150 Hz に到達するチャープを区間の中間点で対称となるように指定します。
t1 = t(1:nSamp/2); x11 = sin(2*pi*400*t1); x12 = chirp(t1-t1(nSamp/4),150,nSamp/Fs,1750,'quadratic'); x1 = x11+x12;
信号の他の部分は、減少する周波数の 2 つの線形チャープで構成されています。一方のチャープの初期周波数は 250 Hz で、100 Hz まで減少します。もう一方のチャープの初期周波数は 400 Hz で、250 Hz まで減少します。
t2 = t(nSamp/2+1:nSamp); x21 = chirp(t2,400,nSamp/Fs,100); x22 = chirp(t2,550,nSamp/Fs,250); x2 = x21+x22;
信号のフーリエ シンクロスクイーズド変換を計算します。β = 100 の形状パラメーターをもつ 256 サンプルのカイザー ウィンドウを指定します。fsst のプロット機能を使用して、結果を表示します。
fsst
sig = [x1;x2]; wind = kaiser(256,120); [sigtr,ftr,ttr] = fsst(sig,Fs,wind); fsst(sig,Fs,wind,'yaxis')
逆変換を行い、関数を再構成します。元の信号、逆変換した信号およびこれらの差分をプロットします。
x = ifsst(sigtr,wind); plot(t,sig,t,x,t,x-sig) legend('Original','Reconstructed','Difference')
diffnorm = norm(x-sig)
diffnorm = 3.9026e-13
2 つのチャープで構成された信号を生成します。信号は、3 kHz で 1 秒間サンプリングされます。最初のチャープの初期周波数は 400 Hz で、サンプリングの最後には 800 Hz に到達します。2 番目のチャープは 500 Hz から開始し、最後には 1000 Hz に到達します。2 番目のチャープの振幅は最初のチャープ 2 倍です。
fs = 3000; t = 0:1/fs:1-1/fs; x1 = chirp(t,400,t(end),800); x2 = 2*chirp(t,500,t(end),1000);
信号のフーリエ シンクロスクイーズド変換を計算し、プロットします。時間が x 軸に、周波数が y 軸に表示されます。
[sst,f] = fsst(x1+x2,fs); fsst(x1+x2,fs,'yaxis')
信号の高エネルギー成分に対応するリッジを抽出します。これはより大きい振幅をもつチャープです。リッジを使用して、信号を再構成します。
[~,iridge] = tfridge(sst,f); xrec = ifsst(sst,[],iridge);
高エネルギー成分のスペクトログラムをプロットします。成分を 256 サンプルのセクションに分割し、255 サンプルのオーバーラップを指定します。512 の DFT 点および箱型ウィンドウを使用します。
spectrogram(xrec,rectwin(256),255,512,fs,'yaxis')
2 番目のチャープを抽出するために、2 つのリッジで tfridge 探索を指定します。出力の 2 番目の列は、信号の低エネルギー成分です。
tfridge
[~,iridge] = tfridge(sst,f,'NumRidges',2); xrec = ifsst(sst,[],iridge(:,2)); spectrogram(xrec,rectwin(256),255,512,fs,'yaxis')
シンクロスクイーズド変換の入力。行列として指定します。
例: fsst(cos(pi/4*(0:159))) は、正弦波のシンクロスクイーズド変換を指定します。
fsst(cos(pi/4*(0:159)))
データ型: single | double 複素数のサポート: あり
single
double
kaiser(256,10)
[]
スペクトル ウィンドウ。整数、あるいは行ベクトルまたは列ベクトルとして指定します。
window が整数の場合、ifsst では、シンクロスクイーズド変換 s は長さ window および β = 10 のカイザー ウィンドウを使用して計算されたと仮定されます。
window がベクトルの場合、ifsst では、s は window を使用して元の信号の各セグメントをウィンドウ処理して計算されたと仮定されます。
window が指定されない、ifsst では、s は長さ 256 および β = 10 のカイザー ウィンドウを使用して計算されたと仮定されます。再構成される信号 x のサンプル数が 256 未満の場合、x の長さと一致するウィンドウの長さまたはウィンドウ ベクトルを指定しなければなりません。
利用可能なウィンドウのリストについては、ウィンドウを参照してください。
例: hann(N+1) と (1-cos(2*pi*(0:N)'/N))/2 は、いずれも長さ N + 1 のハン ウィンドウを指定します。
hann(N+1)
(1-cos(2*pi*(0:N)'/N))/2
N
データ型: double | single
サンプリング周波数。ベクトルとして指定します。f の長さは、s の要素数と等しくなければなりません。
データ型: single | double
周波数範囲。2 要素ベクトルとして指定します。freqrange の値は、厳密に増加し、f により構成される範囲内になければなりません。
時間-周波数リッジのインデックス。ベクトルまたは行列として指定します。iridge は tfridge の出力です。
対象の時間-周波数リッジのそれぞれの側に隣接するビンの数。'NumFrequencyBins' および正の整数スカラーで構成されるコンマ区切りのペアとして指定します。片側のビンの数が nbins より少ない周波数エッジの近傍のインデックスは、より少ないビンの数を使用して再構成されます。
'NumFrequencyBins'
逆シンクロスクイーズド変換。ベクトルとして返されます。x の長さは s の列数と等しくなります。
使用上の注意および制限:
s が可変サイズの場合は、オーディオ プラグインに入力する前に x の実数部を抽出しなければなりません。
ウィンドウの長さは入力信号の長さ以下でなければなりません。
この関数は、GPU 配列を完全にサポートします。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
すべて展開する
関数 ifsst は gpuArray オブジェクトをサポートしています。この機能を使用するには、Parallel Computing Toolbox™ が必要です。
pspectrum
spectrogram
次の 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:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office