高速フーリエ変換について

6 visualizaciones (últimos 30 días)
matsushita ryota
matsushita ryota el 10 de Nov. de 2019
Comentada: matsushita ryota el 12 de Nov. de 2019
たびたび失礼します。
https://jp.mathworks.com/help/matlab/ref/fft.html の「ノイズを含む信号」参考に高速フーリエ変換を行っています。
両側スペクトルP2を出す所までは同じようにできるのですが、片側スペクトルP1が同じように出せません。
例題ではP2(1×1500 double) →P1 (1×751 double)になりますが、
自分のデータで行うと P2(1×222 double) →P1(1×3 double) になってしまい
最後のplot図が同じように描けません。
どのように対処すればいいか教えていただきたいです。
よろしくお願いします。
書いたコード↓
load 'x'
L = 5
Fs = 44100
Y = fft(x)
p2 = abs (Y/L)
p1 = p2(1:L/2+1)
p1(2:end-1) = 2*p1(2:end-1)
f = Fs*(0:(L/2))/L;
plot (f,p1)
使用しているデータを添付します。
よろしくお願い致します。

Respuesta aceptada

Naoya
Naoya el 11 de Nov. de 2019
L は信号x の長さ (本例の場合 L = 222;) を定義する必要がありますので、
L=5;
の箇所を
L = length(x);
とすることで ナイキスト周波数までの 112点分のプロットを表示することができます。
  1 comentario
matsushita ryota
matsushita ryota el 12 de Nov. de 2019
ありがとうございます!

Iniciar sesión para comentar.

Más respuestas (1)

Hiro Yoshino
Hiro Yoshino el 11 de Nov. de 2019
離散フーリエ変換をするときにいくつか覚えておくべきことをまとめておきます。
  • 離散フーリエ変換は線形変換で、変換後のデータ数は変換前の離散データ数(L)と同じ
  • 周波数領域では、周波数は「正規化周波数」になっている。すなわちずつ周波数が増えます。なのでl番目のデータはとなる。これを使ってご自身のサンプリングレートに合わせて軸を作っているのが以下の部分です。
f = Fs*(0:(L/2))/L;
ディメンションチェックすると分かりやすいです:
  1 comentario
matsushita ryota
matsushita ryota el 12 de Nov. de 2019
説明分かりやすかったです! ありがとうございます!

Iniciar sesión para comentar.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!