質問編集履歴
11
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
削除したい質問で削除できない
|
body
CHANGED
@@ -1,56 +1,1 @@
|
|
1
|
-
PythonにてCSVファイルから読み込んだ数値データを高速フーリエ変換(FFT)し、結果をグラフで表示するプログラムを作成したいです。
|
2
|
-
|
3
|
-
サンプル数は20480
|
4
|
-
時間は0.000008s
|
5
|
-
|
6
|
-
CSVファイルには、A列に時間、B列に電圧のデータが入ってい> ```ここに言語を入力
|
7
|
-
ます。
|
8
|
-
```
|
9
|
-
|
10
|
-
numpy,pandasは導入済みです。
|
11
|
-
|
12
|
-
現状のプログラムです。
|
13
|
-
|
14
|
-
```# -*- coding: utf-8 -*-
|
15
|
-
import numpy as np
|
16
|
-
import matplotlib.pyplot as plt
|
17
|
-
import csv
|
18
|
-
import pandas as pd
|
19
|
-
|
20
|
-
|
21
|
-
# データのパラメータ
|
22
|
-
N = 20480 # サンプル数
|
23
|
-
dt = 0.000008 # サンプリング間隔
|
24
|
-
t = np.arange(0, N*dt, dt) # 時間軸
|
25
|
-
freq = np.fft.fftfreq(N, dt) # 周波数軸
|
26
|
-
|
27
|
-
|
1
|
+
質問を削除したいのだが、却下されたので、内容を編集させていただきました。
|
28
|
-
f = pd.read_csv("voice.csv")
|
29
|
-
f = f[["Second","Volt"]]
|
30
|
-
|
31
|
-
# 高速フーリエ変換
|
32
|
-
F = np.fft.fft(f["Volt"])
|
33
|
-
|
34
|
-
# 振幅スペクトルを計算
|
35
|
-
Amp = np.abs(F)
|
36
|
-
|
37
|
-
# グラフ表示
|
38
|
-
plt.figure()
|
39
|
-
plt.rcParams['font.family'] = 'Times New Roman'
|
40
|
-
plt.rcParams['font.size'] = 17
|
41
|
-
plt.subplot(121)
|
42
|
-
plt.plot(t, f, label='f(n)')
|
43
|
-
plt.xlabel("Time", fontsize=20)
|
44
|
-
plt.ylabel("Signal", fontsize=20)
|
45
|
-
plt.grid()
|
46
|
-
leg = plt.legend(loc=1, fontsize=25)
|
47
|
-
leg.get_frame().set_alpha(1)
|
48
|
-
plt.subplot(122)
|
49
|
-
plt.plot(freq, Amp, label='|F(k)|')
|
50
|
-
plt.xlabel('Frequency', fontsize=20)
|
51
|
-
plt.ylabel('Amplitude', fontsize=20)
|
52
|
-
plt.grid()
|
53
|
-
leg = plt.legend(loc=1, fontsize=25)
|
54
|
-
leg.get_frame().set_alpha(1)
|
55
|
-
plt.show()
|
56
|
-
```
|
10
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,7 +3,9 @@
|
|
3
3
|
サンプル数は20480
|
4
4
|
時間は0.000008s
|
5
5
|
|
6
|
-
CSVファイルには、A列に時間、B列に電圧のデータが入ってい
|
6
|
+
CSVファイルには、A列に時間、B列に電圧のデータが入ってい> ```ここに言語を入力
|
7
|
+
ます。
|
8
|
+
```
|
7
9
|
|
8
10
|
numpy,pandasは導入済みです。
|
9
11
|
|
9
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -51,5 +51,4 @@
|
|
51
51
|
leg = plt.legend(loc=1, fontsize=25)
|
52
52
|
leg.get_frame().set_alpha(1)
|
53
53
|
plt.show()
|
54
|
-
コード
|
55
54
|
```
|
8
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -23,7 +23,7 @@
|
|
23
23
|
freq = np.fft.fftfreq(N, dt) # 周波数軸
|
24
24
|
|
25
25
|
# 信号を生成(周波数10の正弦波+周波数20の正弦波+ランダムノイズ)
|
26
|
-
f = pd.read_csv("
|
26
|
+
f = pd.read_csv("voice.csv")
|
27
27
|
f = f[["Second","Volt"]]
|
28
28
|
|
29
29
|
# 高速フーリエ変換
|
7
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,30 +9,30 @@
|
|
9
9
|
|
10
10
|
現状のプログラムです。
|
11
11
|
|
12
|
-
|
12
|
+
```# -*- coding: utf-8 -*-
|
13
13
|
import numpy as np
|
14
14
|
import matplotlib.pyplot as plt
|
15
15
|
import csv
|
16
16
|
import pandas as pd
|
17
17
|
|
18
18
|
|
19
|
-
|
19
|
+
# データのパラメータ
|
20
20
|
N = 20480 # サンプル数
|
21
21
|
dt = 0.000008 # サンプリング間隔
|
22
22
|
t = np.arange(0, N*dt, dt) # 時間軸
|
23
23
|
freq = np.fft.fftfreq(N, dt) # 周波数軸
|
24
24
|
|
25
|
-
|
25
|
+
# 信号を生成(周波数10の正弦波+周波数20の正弦波+ランダムノイズ)
|
26
|
-
f = pd.read_csv("voice.csv")
|
26
|
+
f = pd.read_csv("/Users/yuya/Desktop/python/voice.csv")
|
27
27
|
f = f[["Second","Volt"]]
|
28
28
|
|
29
|
-
|
29
|
+
# 高速フーリエ変換
|
30
30
|
F = np.fft.fft(f["Volt"])
|
31
31
|
|
32
|
-
|
32
|
+
# 振幅スペクトルを計算
|
33
33
|
Amp = np.abs(F)
|
34
34
|
|
35
|
-
|
35
|
+
# グラフ表示
|
36
36
|
plt.figure()
|
37
37
|
plt.rcParams['font.family'] = 'Times New Roman'
|
38
38
|
plt.rcParams['font.size'] = 17
|
@@ -50,4 +50,6 @@
|
|
50
50
|
plt.grid()
|
51
51
|
leg = plt.legend(loc=1, fontsize=25)
|
52
52
|
leg.get_frame().set_alpha(1)
|
53
|
-
plt.show()
|
53
|
+
plt.show()
|
54
|
+
コード
|
55
|
+
```
|
6
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,23 +16,23 @@
|
|
16
16
|
import pandas as pd
|
17
17
|
|
18
18
|
|
19
|
-
|
19
|
+
--データのパラメータ
|
20
20
|
N = 20480 # サンプル数
|
21
21
|
dt = 0.000008 # サンプリング間隔
|
22
22
|
t = np.arange(0, N*dt, dt) # 時間軸
|
23
23
|
freq = np.fft.fftfreq(N, dt) # 周波数軸
|
24
24
|
|
25
|
-
|
25
|
+
--信号を生成
|
26
26
|
f = pd.read_csv("voice.csv")
|
27
27
|
f = f[["Second","Volt"]]
|
28
28
|
|
29
|
-
|
29
|
+
--高速フーリエ変換
|
30
30
|
F = np.fft.fft(f["Volt"])
|
31
31
|
|
32
|
-
|
32
|
+
--振幅スペクトルを計算
|
33
33
|
Amp = np.abs(F)
|
34
34
|
|
35
|
-
|
35
|
+
--グラフ表示
|
36
36
|
plt.figure()
|
37
37
|
plt.rcParams['font.family'] = 'Times New Roman'
|
38
38
|
plt.rcParams['font.size'] = 17
|
5
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -16,23 +16,23 @@
|
|
16
16
|
import pandas as pd
|
17
17
|
|
18
18
|
|
19
|
-
# データのパラメータ
|
19
|
+
# データのパラメータ
|
20
20
|
N = 20480 # サンプル数
|
21
21
|
dt = 0.000008 # サンプリング間隔
|
22
22
|
t = np.arange(0, N*dt, dt) # 時間軸
|
23
23
|
freq = np.fft.fftfreq(N, dt) # 周波数軸
|
24
24
|
|
25
|
-
# 信号を生成
|
25
|
+
# 信号を生成
|
26
26
|
f = pd.read_csv("voice.csv")
|
27
27
|
f = f[["Second","Volt"]]
|
28
28
|
|
29
|
-
# 高速フーリエ変換
|
29
|
+
# 高速フーリエ変換
|
30
30
|
F = np.fft.fft(f["Volt"])
|
31
31
|
|
32
|
-
# 振幅スペクトルを計算
|
32
|
+
# 振幅スペクトルを計算
|
33
33
|
Amp = np.abs(F)
|
34
34
|
|
35
|
-
# グラフ表示
|
35
|
+
# グラフ表示
|
36
36
|
plt.figure()
|
37
37
|
plt.rcParams['font.family'] = 'Times New Roman'
|
38
38
|
plt.rcParams['font.size'] = 17
|
4
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -10,7 +10,6 @@
|
|
10
10
|
現状のプログラムです。
|
11
11
|
|
12
12
|
|
13
|
-
# -*- coding: utf-8 -*-
|
14
13
|
import numpy as np
|
15
14
|
import matplotlib.pyplot as plt
|
16
15
|
import csv
|
3
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -23,7 +23,7 @@
|
|
23
23
|
t = np.arange(0, N*dt, dt) # 時間軸
|
24
24
|
freq = np.fft.fftfreq(N, dt) # 周波数軸
|
25
25
|
|
26
|
-
# 信号を生成
|
26
|
+
# 信号を生成
|
27
27
|
f = pd.read_csv("voice.csv")
|
28
28
|
f = f[["Second","Volt"]]
|
29
29
|
|
2
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
freq = np.fft.fftfreq(N, dt) # 周波数軸
|
25
25
|
|
26
26
|
# 信号を生成(周波数10の正弦波+周波数20の正弦波+ランダムノイズ)
|
27
|
-
f = pd.read_csv("
|
27
|
+
f = pd.read_csv("voice.csv")
|
28
28
|
f = f[["Second","Volt"]]
|
29
29
|
|
30
30
|
# 高速フーリエ変換
|
1
現状の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,4 +5,50 @@
|
|
5
5
|
|
6
6
|
CSVファイルには、A列に時間、B列に電圧のデータが入っています。
|
7
7
|
|
8
|
-
numpy,pandasは導入済みです。
|
8
|
+
numpy,pandasは導入済みです。
|
9
|
+
|
10
|
+
現状のプログラムです。
|
11
|
+
|
12
|
+
|
13
|
+
# -*- coding: utf-8 -*-
|
14
|
+
import numpy as np
|
15
|
+
import matplotlib.pyplot as plt
|
16
|
+
import csv
|
17
|
+
import pandas as pd
|
18
|
+
|
19
|
+
|
20
|
+
# データのパラメータ
|
21
|
+
N = 20480 # サンプル数
|
22
|
+
dt = 0.000008 # サンプリング間隔
|
23
|
+
t = np.arange(0, N*dt, dt) # 時間軸
|
24
|
+
freq = np.fft.fftfreq(N, dt) # 周波数軸
|
25
|
+
|
26
|
+
# 信号を生成(周波数10の正弦波+周波数20の正弦波+ランダムノイズ)
|
27
|
+
f = pd.read_csv("/Users/yuya/Desktop/python/voice.csv")
|
28
|
+
f = f[["Second","Volt"]]
|
29
|
+
|
30
|
+
# 高速フーリエ変換
|
31
|
+
F = np.fft.fft(f["Volt"])
|
32
|
+
|
33
|
+
# 振幅スペクトルを計算
|
34
|
+
Amp = np.abs(F)
|
35
|
+
|
36
|
+
# グラフ表示
|
37
|
+
plt.figure()
|
38
|
+
plt.rcParams['font.family'] = 'Times New Roman'
|
39
|
+
plt.rcParams['font.size'] = 17
|
40
|
+
plt.subplot(121)
|
41
|
+
plt.plot(t, f, label='f(n)')
|
42
|
+
plt.xlabel("Time", fontsize=20)
|
43
|
+
plt.ylabel("Signal", fontsize=20)
|
44
|
+
plt.grid()
|
45
|
+
leg = plt.legend(loc=1, fontsize=25)
|
46
|
+
leg.get_frame().set_alpha(1)
|
47
|
+
plt.subplot(122)
|
48
|
+
plt.plot(freq, Amp, label='|F(k)|')
|
49
|
+
plt.xlabel('Frequency', fontsize=20)
|
50
|
+
plt.ylabel('Amplitude', fontsize=20)
|
51
|
+
plt.grid()
|
52
|
+
leg = plt.legend(loc=1, fontsize=25)
|
53
|
+
leg.get_frame().set_alpha(1)
|
54
|
+
plt.show()
|