teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

タイトル修正です

2019/12/04 09:52

投稿

ammtjm
ammtjm

スコア7

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

1

コードを書き加えました

2019/12/04 09:52

投稿

ammtjm
ammtjm

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,4 @@
1
- #実現したい
1
+ ```こに言語を入力
2
- csvファイルから読み込んだ1000行3列のデータにラベルをそれぞれsignal,1Hz,10Hzと名前を付け,ここに0-5秒の時間データを1000個配列を追加してグラフを4枚作りました.3枚はそれぞれ5秒分の電圧時間グラフ,1枚はこれら3つを合わせたグラフです.
3
- ここで,最後にそれぞれをFFTした振幅周波数グラフが欲しいです.
4
- #コード
5
2
  import pandas as pd
6
3
  import csv
7
4
  import numpy as np
@@ -10,36 +7,35 @@
10
7
  def main():
11
8
  with codecs.open('test2.csv', 'r', 'utf-8', 'ignore') as f:
12
9
  df = pd.read_csv(f)
13
- ---#グラフ作成---
10
+ #グラフ作成
14
- df["time"]=[省略(1000個の時間)]
11
+ df["time"]=[0.005,0.01,…省略(0.005から5まで0.005ずつ1000データ)…4.995,5]
15
12
  df = pd.DataFrame(df,columns=["signal","1Hz","10Hz","time"])
16
13
  fig,ax = plt.subplots(figsize=(9,5))
17
14
  df.set_index("time").plot(y="signal",antialiased=True,grid=True,legend=True,\
18
- xlim=(0,6),ylim=(0,5),color="black")
15
+ xlim=(0,6),ylim=(0,5),color="black",alpha=1)
19
16
  df.set_index("time").plot(y="1Hz", antialiased=True,grid=True, legend=True, \
20
- xlim=(0, 6), ylim=(0, 5), color="blue",ls="-")
17
+ xlim=(0, 6), ylim=(0, 5), color="blue",ls="-",alpha=0.75)
21
18
  df.set_index("time").plot( y="10Hz", antialiased=True, grid=True, legend=True, \
22
- xlim=(0, 6), ylim=(0, 5), color="red", ls="-")
19
+ xlim=(0, 6), ylim=(0, 5), color="red", ls="-", alpha=0.6)
23
- df.set_index("time").plot(ax=ax,y=["signal","1Hz","10Hz"], antialiased=True,\
20
+ df.set_index("time").plot(ax=ax,y=["signal","1Hz","10Hz"], antialiased=True, grid=True, legend=True, \
24
- xlim=(0, 6), ylim=(0, 5),color=["black","blue","red"])
21
+ xlim=(0, 6), ylim=(0, 5), color=["black","blue","red"], alpha=1)
25
22
 
26
23
  ax.set_ylabel("voltage[V]",fontsize=20)
27
24
  ax.set_xlabel("time[s]",fontsize=20)
28
25
 
29
- ---#枠線の太さ---
26
+ #枠線の太さ
30
27
  axis=["top","bottom","left","right"]
31
28
  line_width=[1,1,1,1]
32
29
  for a,w in zip(axis,line_width):
33
30
  ax.spines[a].set_linewidth(w)
34
31
 
35
- ---#目盛り方向,長さ,ラベルの色,ラベルサイズ---
32
+ #目盛り方向,長さ,ラベルの色,ラベルサイズ
36
33
  ax.tick_params(direction="in",length=10,labelsize=20,width=2)
37
- ---#FFT部分---
34
+ #FFT部分
38
- F=np.fft.fft("signal")
35
+ F = np.fft.fft("signal")
39
36
  F_abs = np.abs(F)
40
- ---# 振幅をもとの信号に揃える---
41
- F_abs_amp = F_abs / 500 * 2
37
+ F_abs_amp = F_abs / 1000 * 2
42
- fq = np.linspace(0, 1.0 / 0.005, 500)
38
+ fq = np.linspace(0, 1.0 / 0.005, 1000)
43
39
  plt.xlabel('freqency(Hz)', fontsize=14)
44
40
  plt.ylabel('amplitude', fontsize=14)
45
41
  plt.plot(fq, F_abs_amp)
@@ -50,7 +46,9 @@
50
46
 
51
47
  if __name__ == '__main__':
52
48
  main()
53
-
49
+ ```#実現したいこと
50
+ csvファイルから読み込んだ1000行3列のデータにラベルをそれぞれsignal,1Hz,10Hzと名前を付け,ここに0-5秒の時間データを1000個配列を追加してグラフを4枚作りました.3枚はそれぞれ5秒分の電圧時間グラフ,1枚はこれら3つを合わせたグラフです.
51
+ ここで,最後にそれぞれをFFTした振幅周波数グラフが欲しいです.
54
52
  #わからない箇所,エラー
55
53
  エラーメッセージのValueError: Invalid axis (-1) specified.の意味が掴めません.-1というのがどういう状態なのかわからず,直せません.
56
54
 
@@ -67,4 +65,5 @@
67
65
  File "mkl_fft\_pydfti.pyx", line 203, in mkl_fft._pydfti.__process_arguments
68
66
  ValueError: Invalid axis (-1) specified.
69
67
  #補足
70
- 上記のコードではfftの部分でsignalの列を選んでいますが最終的には3データ全てをfftしたいと考えています.
68
+ 上記のコードではfftの部分でsignalの列を選んでいますが最終的には3データ全てをfftしたいと考えています.
69
+ プログラム初心者で,リストをそのまま書いた形で量が多いため省略させて頂きました