質問編集履歴
2
タイトル修正です
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
csvから読み込んだデータでFFTをしたいのですがエラーメッセージの意味が分かりません
|
1
|
+
csvから読み込んだデータでFFTをしたいのですがエラーメッセージの意味が分かりません.ValueError: Invalid axis (-1) specified.
|
test
CHANGED
File without changes
|
1
コードを書き加えました
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,10 +1,4 @@
|
|
1
|
-
|
1
|
+
```ここに言語を入力
|
2
|
-
|
3
|
-
csvファイルから読み込んだ1000行3列のデータにラベルをそれぞれsignal,1Hz,10Hzと名前を付け,ここに0-5秒の時間データを1000個配列を追加してグラフを4枚作りました.3枚はそれぞれ5秒分の電圧時間グラフ,1枚はこれら3つを合わせたグラフです.
|
4
|
-
|
5
|
-
ここで,最後にそれぞれをFFTした振幅周波数グラフが欲しいです.
|
6
|
-
|
7
|
-
#コード
|
8
2
|
|
9
3
|
import pandas as pd
|
10
4
|
|
@@ -22,9 +16,9 @@
|
|
22
16
|
|
23
17
|
df = pd.read_csv(f)
|
24
18
|
|
25
|
-
|
19
|
+
#グラフ作成
|
26
20
|
|
27
|
-
df["time"]=[省略(1000
|
21
|
+
df["time"]=[0.005,0.01,…省略(0.005から5まで0.005ずつ1000データ)…4.995,5]
|
28
22
|
|
29
23
|
df = pd.DataFrame(df,columns=["signal","1Hz","10Hz","time"])
|
30
24
|
|
@@ -32,19 +26,19 @@
|
|
32
26
|
|
33
27
|
df.set_index("time").plot(y="signal",antialiased=True,grid=True,legend=True,\
|
34
28
|
|
35
|
-
xlim=(0,6),ylim=(0,5),color="black")
|
29
|
+
xlim=(0,6),ylim=(0,5),color="black",alpha=1)
|
36
30
|
|
37
31
|
df.set_index("time").plot(y="1Hz", antialiased=True,grid=True, legend=True, \
|
38
32
|
|
39
|
-
xlim=(0, 6), ylim=(0, 5), color="blue",ls="-")
|
33
|
+
xlim=(0, 6), ylim=(0, 5), color="blue",ls="-",alpha=0.75)
|
40
34
|
|
41
35
|
df.set_index("time").plot( y="10Hz", antialiased=True, grid=True, legend=True, \
|
42
36
|
|
43
|
-
xlim=(0, 6), ylim=(0, 5), color="red", ls="-")
|
37
|
+
xlim=(0, 6), ylim=(0, 5), color="red", ls="-", alpha=0.6)
|
44
38
|
|
45
|
-
df.set_index("time").plot(ax=ax,y=["signal","1Hz","10Hz"], antialiased=True,\
|
39
|
+
df.set_index("time").plot(ax=ax,y=["signal","1Hz","10Hz"], antialiased=True, grid=True, legend=True, \
|
46
40
|
|
47
|
-
xlim=(0, 6), ylim=(0, 5),color=["black","blue","red"])
|
41
|
+
xlim=(0, 6), ylim=(0, 5), color=["black","blue","red"], alpha=1)
|
48
42
|
|
49
43
|
|
50
44
|
|
@@ -54,7 +48,7 @@
|
|
54
48
|
|
55
49
|
|
56
50
|
|
57
|
-
|
51
|
+
#枠線の太さ
|
58
52
|
|
59
53
|
axis=["top","bottom","left","right"]
|
60
54
|
|
@@ -66,21 +60,19 @@
|
|
66
60
|
|
67
61
|
|
68
62
|
|
69
|
-
|
63
|
+
#目盛り方向,長さ,ラベルの色,ラベルサイズ
|
70
64
|
|
71
65
|
ax.tick_params(direction="in",length=10,labelsize=20,width=2)
|
72
66
|
|
73
|
-
|
67
|
+
#FFT部分
|
74
68
|
|
75
|
-
F=np.fft.fft("signal")
|
69
|
+
F = np.fft.fft("signal")
|
76
70
|
|
77
71
|
F_abs = np.abs(F)
|
78
72
|
|
79
|
-
|
73
|
+
F_abs_amp = F_abs / 1000 * 2
|
80
74
|
|
81
|
-
F_abs_amp = F_abs / 500 * 2
|
82
|
-
|
83
|
-
fq = np.linspace(0, 1.0 / 0.005,
|
75
|
+
fq = np.linspace(0, 1.0 / 0.005, 1000)
|
84
76
|
|
85
77
|
plt.xlabel('freqency(Hz)', fontsize=14)
|
86
78
|
|
@@ -102,7 +94,11 @@
|
|
102
94
|
|
103
95
|
main()
|
104
96
|
|
97
|
+
```#実現したいこと
|
105
98
|
|
99
|
+
csvファイルから読み込んだ1000行3列のデータにラベルをそれぞれsignal,1Hz,10Hzと名前を付け,ここに0-5秒の時間データを1000個配列を追加してグラフを4枚作りました.3枚はそれぞれ5秒分の電圧時間グラフ,1枚はこれら3つを合わせたグラフです.
|
100
|
+
|
101
|
+
ここで,最後にそれぞれをFFTした振幅周波数グラフが欲しいです.
|
106
102
|
|
107
103
|
#わからない箇所,エラー
|
108
104
|
|
@@ -137,3 +133,5 @@
|
|
137
133
|
#補足
|
138
134
|
|
139
135
|
上記のコードではfftの部分でsignalの列を選んでいますが最終的には3データ全てをfftしたいと考えています.
|
136
|
+
|
137
|
+
プログラム初心者で,リストをそのまま書いた形で量が多いため省略させて頂きました
|