高速フーリエ変換について
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
matsushita ryota
el 10 de Nov. de 2019
Comentada: matsushita ryota
el 12 de Nov. de 2019
たびたび失礼します。
両側スペクトル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)
使用しているデータを添付します。
よろしくお願い致します。
0 comentarios
Respuesta aceptada
Naoya
el 11 de Nov. de 2019
L は信号x の長さ (本例の場合 L = 222;) を定義する必要がありますので、
L=5;
の箇所を
L = length(x);
とすることで ナイキスト周波数までの 112点分のプロットを表示することができます。
Más respuestas (1)
Hiro Yoshino
el 11 de Nov. de 2019
離散フーリエ変換をするときにいくつか覚えておくべきことをまとめておきます。
- 離散フーリエ変換は線形変換で、変換後のデータ数は変換前の離散データ数(L)と同じ
- 周波数領域では、周波数は「正規化周波数」になっている。すなわちずつ周波数が増えます。なのでl番目のデータはとなる。これを使ってご自身のサンプリングレートに合わせて軸を作っているのが以下の部分です。
f = Fs*(0:(L/2))/L;
ディメンションチェックすると分かりやすいです:
Ver también
Categorías
Más información sobre Discrete Fourier and Cosine Transforms en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!