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

質問編集履歴

1

誤字

2021/11/03 12:48

投稿

SomeoneHello
SomeoneHello

スコア5

title CHANGED
File without changes
body CHANGED
@@ -19,20 +19,21 @@
19
19
  ```python
20
20
  a = [1]
21
21
  b = a.copy()
22
- # リストのコピーメソッド
23
22
 
24
23
  ```
25
- このようにできと知っていたのですが、この対策はNumPyの配列でも通用しますか?
24
+ このような方法があるのですが、この対策はNumPyの配列でも通用しますか?
26
25
 
27
26
  **質問3**
28
27
  ```python
28
+   spectrogram = np.zeros((num_frames, int(fft_size/2)+1))
29
+
29
30
  for frame_idx in range(num_frames):
30
31
  # 分析の開始位置は,フレーム番号(0始まり)*フレームシフト
31
32
  start_index = frame_idx * frame_shift
32
33
 
33
34
  # 1フレーム分の波形を抽出
34
35
  frame = waveform[start_index : \
35
- start_index + frame_size].copy()
36
+ start_index + frame_size].copy()#------------------------1
36
37
 
37
38
  # ハミング窓を掛ける
38
39
  frame = frame * np.hamming(frame_size)
@@ -51,7 +52,26 @@
51
52
 
52
53
  # 計算結果をスペクトログラムに格納
53
54
  # 数字のところをコロンにするとその軸全部とってくる
54
- spectrogram[frame_idx, :] = log_absolute
55
+ spectrogram[frame_idx, :] = log_absolute#---------------------------------2
56
+ ```
57
+ 1では
58
+ frame = waveform[start_index : start_index + frame_size].copy() と書かれており、配列をちゃんとコピーしている。
55
59
 
60
+ 一方で、2では
61
+ spectrogram[frame_idx, :] = log_absolute と書かれており、log_absoluteが配列であるにもかかわらずそのまま代入している。
62
+ これでは、for文で繰り返す中で、1つ前の繰り返しによって代入されたspectrogramの行が、今の繰り返しの代入によって同じ値になってしまわないのでしょうか?
63
+ 繰り返し1回目:
64
+ (1,2,3,4) ←代入された
56
65
 
57
- ```
66
+ 繰り返し2回目:
67
+ (5,6,7,8) ←ここも同時に書き換えられないのか?
68
+ (5,6,7,8) ←代入された
69
+
70
+ 繰り返し3回目:
71
+ (1,3,5,7) ←ここも同時に書き換えられないのか?
72
+ (1,3,5,7) ←ここも同時に書き換えられないのか?
73
+ (1,3,5,7) ←代入された
74
+
75
+ .
76
+ .
77
+ .