質問編集履歴
2
ソースコードに明確な区切りを設定しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
サンプリング周波数8192Hzのcsv形式波形ファイルをpythonで読み込みFFT分析を行い、横軸周波数 片振幅の伝達関数グラフの作成
|
3
|
+
初めての質問です。サンプリング周波数8192Hzのcsv形式波形ファイルをpythonで読み込みFFT分析を行い、横軸周波数 片振幅の伝達関数グラフの作成をしたいです。
|
4
4
|
|
5
5
|
|
6
6
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
python
|
21
|
+
```python
|
22
22
|
|
23
23
|
import numpy as np
|
24
24
|
|
@@ -242,7 +242,7 @@
|
|
242
242
|
|
243
243
|
proc.process()
|
244
244
|
|
245
|
-
|
245
|
+
```
|
246
246
|
|
247
247
|
### 試したこと
|
248
248
|
|
@@ -251,3 +251,7 @@
|
|
251
251
|
|
252
252
|
|
253
253
|
### 補足情報(FW/ツールのバージョンなど)
|
254
|
+
|
255
|
+
初めての質問でまだ使い勝手がよく分かっておらずソースコードなど見にくいと思いますがご容赦ください。
|
256
|
+
|
257
|
+
お手数ではございますが、teratailさんにコードを記述する際のアドバイス等一言だけでもございましたら、書いていただけると嬉しいです。本筋とは離れた要求であることは承知しておりますがどうかよろしくお願い致します。
|
1
コードの書式を改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
csvファイルをpythonで読み込みFFT分析を行い、横軸周波数 片振幅の伝達関数グラフの作成
|
3
|
+
サンプリング周波数8192Hzのcsv形式波形ファイルをpythonで読み込みFFT分析を行い、横軸周波数 片振幅の伝達関数グラフの作成
|
4
4
|
|
5
5
|
|
6
6
|
|
7
7
|
### 発生している問題・エラーメッセージ
|
8
8
|
|
9
|
-
csvファイルには
|
9
|
+
csvファイルにはがあり、それをコード内の条件で周波数分析を試みているのですが、クラスについての理解が疎いのか上手くコードが動作しません。以下のようなグラフが表示されてしまいます。
|
10
10
|
|
11
11
|
上から順に時刻歴波形 窓関数 伝達関数(デシベル表示)
|
12
12
|
|
@@ -50,7 +50,7 @@
|
|
50
50
|
|
51
51
|
self.msg = 'Wave_Fs8192_01.csv'
|
52
52
|
|
53
|
-
|
53
|
+
設定値
|
54
54
|
|
55
55
|
self.fs = 8192 # サンプリング周波数
|
56
56
|
|
@@ -70,7 +70,7 @@
|
|
70
70
|
|
71
71
|
|
72
72
|
|
73
|
-
|
73
|
+
オーバーラップの関数
|
74
74
|
|
75
75
|
def ov(self, F_s, Fc, overlap):
|
76
76
|
|
@@ -118,7 +118,7 @@
|
|
118
118
|
|
119
119
|
x=t[start:end]
|
120
120
|
|
121
|
-
|
121
|
+
|
122
122
|
|
123
123
|
fft(y,self.fs)
|
124
124
|
|
@@ -134,15 +134,11 @@
|
|
134
134
|
|
135
135
|
|
136
136
|
|
137
|
-
|
137
|
+
窓関数で波形を切り出す
|
138
138
|
|
139
139
|
L = len(F_s)
|
140
140
|
|
141
|
-
|
141
|
+
|
142
|
-
|
143
|
-
#window=np.boxcar(L) #レクタンギュラ窓
|
144
|
-
|
145
|
-
#window = np.hanning(L) # ハン窓
|
146
142
|
|
147
143
|
window=signal.boxcar(L)
|
148
144
|
|
@@ -150,33 +146,33 @@
|
|
150
146
|
|
151
147
|
|
152
148
|
|
153
|
-
|
149
|
+
FFT計算
|
154
|
-
|
155
|
-
|
150
|
+
|
156
|
-
|
151
|
+
|
152
|
+
|
157
|
-
NFFT = 2**nextpow2(L)
|
153
|
+
NFFT = 2**nextpow2(L)
|
158
|
-
|
154
|
+
|
159
|
-
fft_amp = fftpack.fft(array_window, NFFT)
|
155
|
+
fft_amp = fftpack.fft(array_window, NFFT)
|
160
|
-
|
156
|
+
|
161
|
-
fft_fq = fftpack.fftfreq(NFFT, d=1.0/fs)
|
157
|
+
fft_fq = fftpack.fftfreq(NFFT, d=1.0/fs)
|
162
|
-
|
163
|
-
|
158
|
+
|
159
|
+
|
164
160
|
|
165
161
|
fft_amp = fft_amp[0: int(len(fft_amp)/2)]
|
166
162
|
|
167
163
|
fft_fq = fft_fq[0: int(len(fft_fq)/2)]
|
168
164
|
|
169
|
-
fft_amp = db(abs(fft_amp))
|
165
|
+
fft_amp = db(abs(fft_amp))
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
|
174
170
|
|
175
171
|
plt.figure(figsize=(8, 6*1.5))
|
176
172
|
|
177
|
-
plt.subplots_adjust(hspace=0.4)
|
173
|
+
plt.subplots_adjust(hspace=0.4)
|
178
|
-
|
179
|
-
|
174
|
+
|
175
|
+
|
180
176
|
|
181
177
|
plt.subplot(3, 1, 1)
|
182
178
|
|
@@ -186,7 +182,7 @@
|
|
186
182
|
|
187
183
|
plt.grid()
|
188
184
|
|
189
|
-
|
185
|
+
|
190
186
|
|
191
187
|
plt.subplot(3, 1, 2)
|
192
188
|
|
@@ -194,13 +190,13 @@
|
|
194
190
|
|
195
191
|
plt.xlabel(xlabel_name)
|
196
192
|
|
197
|
-
|
193
|
+
|
198
194
|
|
199
195
|
plt.ylabel('Data*hann')
|
200
196
|
|
201
197
|
plt.grid()
|
202
198
|
|
203
|
-
|
199
|
+
|
204
200
|
|
205
201
|
plt.subplot(3, 1, 3)
|
206
202
|
|
@@ -216,7 +212,7 @@
|
|
216
212
|
|
217
213
|
|
218
214
|
|
219
|
-
|
215
|
+
|
220
216
|
|
221
217
|
def nextpow2(n):
|
222
218
|
|
@@ -228,7 +224,7 @@
|
|
228
224
|
|
229
225
|
|
230
226
|
|
231
|
-
|
227
|
+
|
232
228
|
|
233
229
|
def db(x, dBref=1):
|
234
230
|
|