ShortTimeFourier[data]
data の短時間フーリエ変換(STFT)をShortTimeFourierDataオブジェクトとして返す.
ShortTimeFourier[data,n]
長さ n のパーティションを使う.
ShortTimeFourier[data,n,d]
オフセット d のパーティションを使う.
ShortTimeFourier[data,n,d,wfun]
各パーティションに平滑化窓 wfun を適用する.
ShortTimeFourier[data,n,d,wfun,m]
変換の計算前に,ゼロから長さ m まででパーティションを充填する.
ShortTimeFourier
ShortTimeFourier[data]
data の短時間フーリエ変換(STFT)をShortTimeFourierDataオブジェクトとして返す.
ShortTimeFourier[data,n]
長さ n のパーティションを使う.
ShortTimeFourier[data,n,d]
オフセット d のパーティションを使う.
ShortTimeFourier[data,n,d,wfun]
各パーティションに平滑化窓 wfun を適用する.
ShortTimeFourier[data,n,d,wfun,m]
変換の計算前に,ゼロから長さ m まででパーティションを充填する.
詳細とオプション
- 短時間フーリエ変換(STFT)は,信号の時間・周波数表現で,信号を時間と周波数の両方で,変換したり,フィルタをかけたり,分析したりするためにしばしば使われる.
- ShortTimeFourier[data]は data のパーティションの離散フーリエ変換(DFT)を計算し,ShortTimeFourierDataオブジェクトを返す.
- Spectrogramを data または結果のShortTimeFourierDataオブジェクトに使ってスペクトログラムをプロットする.
- ShortTimeFourier[data]は長さ
でオフセット
のパーティションを使う.ただし,
はLength[data]である. - パーティションの長さ n とオフセット d は,(サンプル数として解釈される)整数として,あるいは時間またはサンプル量として 表すことができる.
- 必要な場合は,すべてのパーティションが同じ長さになるように,右側に固定充填が使われる.
- ShortTimeFourier[data,n,d,wfun]の平滑化窓 wfun は,
から
までの間でサンプルを取る,あるいは長さ n のリストの窓関数を使って指定できる.デフォルトの窓はDirichletWindowで,事実上平滑化は行わない. - data は以下の任意のものでよい.
-
list 数値データのベクトル audio AudioオブジェクトまたはSoundオブジェクト video Videoオブジェクト - 多チャンネルの音声オブジェクトについては,全チャンネルの合計について変換が計算される.
- ShortTimeFourierはFourierParametersオプションを取る.デフォルト設定はFourierParameters->{1,-1}である.
例題
すべて開く すべて閉じる例 (2)
ShortTimeFourier[{0, (1/Sqrt[2]), -1, (1/Sqrt[2]), 0, -(1/Sqrt[2]), 1, -(1/Sqrt[2])}, 4]ShortTimeFourier[\!\(\*AudioBox[""]\), 2048]Spectrogram[%]スコープ (7)
データ (3)
ShortTimeFourier[Import["ExampleData/rule30.wav"]]ShortTimeFourier[RandomReal[1, 100]]ShortTimeFourier[\!\(\*VideoBox[""]\)]パラメータ (4)
data = Table[Sin[.5n ], {n, 0., 100.}];
ShortTimeFourier[data]ShortTimeFourier[data, 10]時間Quantityを使ってパーティションサイズを指定する:
data = ExampleData[{"Audio", "MaleVoice"}];
ShortTimeFourier[data, Quantity[30, "Milliseconds"]]data = Table[Sin[.5n ], {n, 0., 100.}];
ShortTimeFourier[data, 10]ShortTimeFourier[data, 10, 2]時間Quantityを使ってオフセットを指定する:
data = ExampleData[{"Audio", "MaleVoice"}];
ShortTimeFourier[data, Quantity[30, "Milliseconds"], Quantity[10, "Milliseconds"]]Scaledを使ってパーティションサイズと相対的なオフセットを指定する:
data = ExampleData[{"Audio", "MaleVoice"}];
ShortTimeFourier[data, Quantity[30, "Milliseconds"], Scaled[1 / 3]]data = Table[Sin[.5n ], {n, 0., 100.}];
ShortTimeFourier[data, 10, 2]NoneまたはDirichletWindowを使うことは平滑化を行わないことに等しい:
ShortTimeFourier[data, 10, 2, None]HannWindowを平滑化窓関数として使用する:
ShortTimeFourier[data, 10, 2, HannWindow]window = Array[Sin, 10, {0., Pi}];
ShortTimeFourier[data, 10, 2, window]data = Table[Sin[.5n ], {n, 0., 100.}];
ShortTimeFourier[data, 10, 2, HannWindow]各パーティションがサンプル20個分の長さになるように充填する:
ShortTimeFourier[data, 10, 2, HannWindow, 20]時間Quantityを使って充填を指定する:
data = ExampleData[{"Audio", "MaleVoice"}];
ShortTimeFourier[data, Quantity[30, "Milliseconds"], Quantity[10, "Milliseconds"], HannWindow, Quantity[50, "Milliseconds"]]オプション (3)
FourierParameters (3)
a = ShortTimeFourier[{1, 0, 1, 0, 0, 1, 0, 0, 0, 1}, FourierParameters -> {1, 1}];
a["Data"]a = ShortTimeFourier[{1, 0, 1, 0, 0, 1, 0, 0, 0, 1}, FourierParameters -> {0, 1}];
a["Data"]%Sqrt[a["PartitionSize"]]a = ShortTimeFourier[{1, 0, 1, 0, 0, 1, 0, 0, 0, 1}, FourierParameters -> {-1, 1}];
a["Data"]アプリケーション (6)
chirp = Table[Cos[200. π t + 2400. π t ^ 2], {t, 0., 1.6, 1 / 8000.}];stft = ShortTimeFourier[chirp]ShortTimeFourierデータの振幅のプロット:
Spectrogram[stft]ShortTimeFourier[chirp, Automatic, Automatic, HannWindow]//SpectrogramListLinePlot[Abs[stft["Data"][[30]]]]a = Import["ExampleData/rule30.wav"];
stft = ShortTimeFourier[a, 1024, 512, HannWindow]spectrogram = Abs[stft["Data"][[All, ;; Floor[stft["PartitionSize"] / 2 + 1]]]];
spectrogram//MatrixPlotpowerSpectrogram = spectrogram ^ 2;
powerSpectrogram//MatrixPlotdbSpectrogram = 20Log10[powerSpectrogram];
dbSpectrogram//MatrixPlotchirp = Table[Sin[ π t + 10. π t ^ 2], {t, 0., 1.6, 1 / 200.}];
chirp//ListLinePlotstft = ShortTimeFourier[chirp, 100, 10, HannWindow]InverseShortTimeFourierを使って逆変換を近似する:
InverseShortTimeFourier[stft][[ ;; Length[chirp]]]//ListLinePlotchirp = Table[Sin[ π t + 10. π t ^ 2] + RandomReal[], {t, 0., 1.6, 1 / 200.}];
chirp//ListLinePlotstft = ShortTimeFourier[chirp, 100, 10, HannWindow];
stft//Spectrogramg[value_] := (value Abs[value]/Abs[value] + 20)
Plot[g[x], {x, 0, 10}]stft["Data"] = Map[g, stft["Data"], {2}];
stft//SpectrogramInverseShortTimeFourierを使って短時間フーリエ変換を逆にする:
InverseShortTimeFourier[stft][[ ;; Length[chirp]]]//ListLinePlot別のSTFT分割オフセットを使って音声録音のスピードを変える:
a = \!\(\*AudioBox[""]\);
stft = ShortTimeFourier[a, 1024, 128, HannWindow];stft["PartitionOffset"] = 100録音をスピードアップするために,短時間フーリエ変換の逆変換を計算する:
InverseShortTimeFourier[stft]a = \!\(\*AudioBox[""]\);stft = ShortTimeFourier[a, 1024, 128, HannWindow]stft["Data"] = ArrayResample[stft["Data"], {300, 1024}];もとの録音を遅くしたバージョンを得るために,短時間フーリエ変換の逆変換を計算する:
InverseShortTimeFourier[stft]特性と関係 (2)
短時間フーリエ変換データはSpectrogramArrayを使って計算した値と同じである:
data = RandomReal[1, 200];ShortTimeFourier[data, 100, 10, HannWindow]["Data"] == SpectrogramArray[data, 100, 10, HannWindow]ShortTimeFourierのSpectrogramはもとの信号のSpectrogramと等価である:
chirp = Table[Sin[ π t + 10. π t ^ 2], {t, 0., 1.6, 1 / 200.}];ShortTimeFourier[chirp, 100, 10, HannWindow]//SpectrogramSpectrogram[chirp, 100, 10, HannWindow]デフォルトのパーティションパラメータは異なる点に注意のこと:
Spectrogram[#, FrameTicks -> False]& /@ {chirp, ShortTimeFourier[chirp]}テキスト
Wolfram Research (2019), ShortTimeFourier, Wolfram言語関数, https://reference.wolfram.com/language/ref/ShortTimeFourier.html (2024年に更新).
CMS
Wolfram Language. 2019. "ShortTimeFourier." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/ShortTimeFourier.html.
APA
Wolfram Language. (2019). ShortTimeFourier. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ShortTimeFourier.html
BibTeX
@misc{reference.wolfram_2026_shorttimefourier, author="Wolfram Research", title="{ShortTimeFourier}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/ShortTimeFourier.html}", note=[Accessed: 14-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_shorttimefourier, organization={Wolfram Research}, title={ShortTimeFourier}, year={2024}, url={https://reference.wolfram.com/language/ref/ShortTimeFourier.html}, note=[Accessed: 14-November-2026]}