質問編集履歴

3

誤字の訂正

2020/09/29 12:01

投稿

kawahagi
kawahagi

スコア9

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ![図1軸を指定しない場合のpcolormeshの出力](53ab9700b260c5a191b51fb9c0967a82.png)
6
6
 
7
- 一方、時間軸・周波数軸を規定するためにplt.pcolormesh(時間軸,周波数軸,データ)とした途端、それまで見えていた周波数の正負での対称性が消えてしまいます。![図2軸を指定した場合](0e64b109d33d40e1ac4e63487e3246e7.png)](987dd0208b171144bc6a12a7380165d8.png)
7
+ 一方、時間軸・周波数軸を規定するためにplt.pcolormesh(時間軸,周波数軸,データ)とした途端、それまで見えていた周波数の正負での対称性が消えてしまいます。![図2軸を指定した場合](0e64b109d33d40e1ac4e63487e3246e7.png)]
8
8
 
9
9
  この際、周波数軸とデータの対応は以下の図の通りになっております。
10
10
 

2

より分かりやすくした

2020/09/29 12:01

投稿

kawahagi
kawahagi

スコア9

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,18 @@
1
1
  音声ファイルの短時間フーリエ変換stftを行いたいです。
2
2
 
3
- 以下のよう書いたころ一応動いておりますが、周波数軸の生負に関する対称性が見せん
3
+ 結果をスペクトログラム表示する際にplt.pcolormesh(デタ)使う以下のスペクトログラムが得られます対称性が見られ
4
4
 
5
- FFTの結果は一般的に周波数の正負で対称的にるはずです。コードが問題なfftの理解不足なのか教えて頂きたいです。宜しくお願いします。
5
+ ![図1を指定しい場合pcolormeshの出力](53ab9700b260c5a191b51fb9c0967a82.png)
6
6
 
7
+ 一方、時間軸・周波数軸を規定するためにplt.pcolormesh(時間軸,周波数軸,データ)とした途端、それまで見えていた周波数の正負での対称性が消えてしまいます。![図2軸を指定した場合](0e64b109d33d40e1ac4e63487e3246e7.png)](987dd0208b171144bc6a12a7380165d8.png)
7
8
 
9
+ この際、周波数軸とデータの対応は以下の図の通りになっております。
10
+
11
+ ![イメージ説明](ab2a40bfb63bd23e20a7dfd1ec5b6569.png)
12
+
13
+ 軸を指定した際も対称性を保ったまま描画したいのですが、どうすれば良いでしょうか?
14
+
15
+ 以下にstftおよびグラフ描画に使用したコードを張っております。宜しくお願い致します。
8
16
 
9
17
  ```ここに言語を入力
10
18
 

1

コードが見づらかったため変更

2020/09/29 11:57

投稿

kawahagi
kawahagi

スコア9

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜^
9
+ ```ここに言語を入力
10
10
 
11
11
  from scipy.io.wavfile import read
12
12
 
@@ -18,9 +18,9 @@
18
18
 
19
19
 
20
20
 
21
+ #SFTF関数
21
22
 
22
-
23
- def FFT(s, Lf, step=None):# STFT(s:signal(1D-array), Lf:length of frame(window), noverlap:number of overlap)
23
+ def SFFT(s, Lf, step=None):# STFT(s:signal(1D-array), Lf:length of frame(window), noverlap:number of overlap)
24
24
 
25
25
  if step==None:
26
26
 
@@ -42,11 +42,11 @@
42
42
 
43
43
 
44
44
 
45
-
45
+ #スペクトログラム関数
46
46
 
47
47
  def plot_spectrogram(fs, s, Lf, step=None):# plot spectrogram (fs: sampling frequency, s: signal(1D-array), Lf: length of frame(window), noverlap: number of overlap)
48
48
 
49
- S = FFT(s, Lf, step)
49
+ S = SFFT(s, Lf, step)
50
50
 
51
51
  S = np.abs(S)
52
52
 
@@ -83,3 +83,5 @@
83
83
 
84
84
 
85
85
  plot_spectrogram(24000,data,Lf,step=None)
86
+
87
+ ```