質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

Pythonでフーリエ変換をする方法

genuine
genuine

総合スコア20

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1回答

0評価

0クリップ

6283閲覧

投稿2018/04/28 04:59

前提・実現したいこと

Pythonでデジタル信号のフーリエ変換に試みています。

発生している問題・エラーメッセージ

https://org-technology.com/posts/smoother.html
↑こちらに示されているサンプルを元に自分のデータで解析しようと考えているのですが、「周波数スケール」や「データ数」を自分のデータの場合、どのように置き換えればよいのかわからないでいます…。
また、フーリエ変換をする際に
yf = fftpack.fft(y)/(n/2)
で、なぜn/2で割るのかがよくわかりません。
y2 = np.real(fftpack.ifft(yf2)*n)
では逆変換では逆にnをかけているのも少し疑問です。

ちなみに一般的な数学や物理の参考書には目を通しており、基本的なフーリエ変換の原理は理解しているつもりです。

該当のソースコード

python

import os import time import numpy as np from scipy.stats import norm from scipy import signal import matplotlib.pyplot as plt os.chdir(r"C:\Users\genuine\Desktop\earth science\20180217~misasa\20180224b") files = os.listdir(r"C:\Users\genuine\Desktop\earth science\20180217~misasa\20180224b") t1 = time.time() dat_list = [] for file in files: if file.count('.dat'): dat_list.append(file) ampl_list = [] for file in dat_list: data = np.loadtxt(file, delimiter=' ') x_value = data[:,0] #1列目を横軸とする y_value = data[:,1] #2列目を縦軸とする yh_value = signal.hilbert(y_value) count = abs(yh_value) sum = 0 for i in count[12000:13600]: sum = sum + i mean = sum/1600 ampl_list.append(mean) x_axis = np.arange(800, 900.1, 0.2) y_axis = np.array(ampl_list) plt.plot(x_axis, y_axis, marker="", linewidth=0.2, color='black') plt.show() np.save('ampl_list.npy', y_axis) #.npyで保存する t2 = time.time() proceeding_time = t2 - t1 print('処理時間'+str(proceeding_time))

イメージ説明

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

x_axis = np.arange(800, 900.1, 0.2)
からお分かりかと思いますが、私が解析を試みているのは501個のデータ点からなるグラフのフーリエ変換です。

python 3.6.1
numpy 1.12.1
scipy 0.19.0
matplotlib 2.0.2

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。