質問編集履歴
1
誤字
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
|
-
このよう
|
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
|
+
.
|