質問編集履歴

2

タイトル修正です

2019/12/04 09:52

投稿

ammtjm
ammtjm

スコア7

test CHANGED
@@ -1 +1 @@
1
- csvから読み込んだデータでFFTをしたいのですがエラーメッセージの意味が分かりません
1
+ csvから読み込んだデータでFFTをしたいのですがエラーメッセージの意味が分かりません.ValueError: Invalid axis (-1) specified.
test CHANGED
File without changes

1

コードを書き加えました

2019/12/04 09:52

投稿

ammtjm
ammtjm

スコア7

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
- ---#FFT部分---
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, 500)
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
+ プログラム初心者で,リストをそのまま書いた形で量が多いため省略させて頂きました