質問編集履歴
5
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
N=length(x2)-filter_length;
|
15
15
|
|
16
16
|
for i=1:N;
|
17
|
-
xx=
|
17
|
+
xx=x(i:i+filter_length-1);
|
18
18
|
y(i)=w.'.*xx;
|
19
19
|
e(i)=d(i)-y(i);
|
20
20
|
w=w+(myu.*((e(i).*x)./(x.'.*x)));
|
@@ -57,7 +57,7 @@
|
|
57
57
|
>>
|
58
58
|
```
|
59
59
|
と確認しましたが,sizeは合っているように見えます.
|
60
|
-
|
60
|
+
w,xxは400×1の行列です.
|
61
61
|
```matlab
|
62
62
|
>> size(y(1))
|
63
63
|
|
4
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -65,9 +65,9 @@
|
|
65
65
|
|
66
66
|
1 1
|
67
67
|
```
|
68
|
-
多分ここが80000×400になっていないのが問題ですが,直し方がわかりません.
|
69
68
|
|
70
69
|
|
70
|
+
|
71
71
|
```matlab
|
72
72
|
|
73
73
|
y=w.'.*x;
|
3
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,7 +14,8 @@
|
|
14
14
|
N=length(x2)-filter_length;
|
15
15
|
|
16
16
|
for i=1:N;
|
17
|
+
xx=x2(i:i+filter_length-1);
|
17
|
-
y(i)=w.'.*
|
18
|
+
y(i)=w.'.*xx;
|
18
19
|
e(i)=d(i)-y(i);
|
19
20
|
w=w+(myu.*((e(i).*x)./(x.'.*x)));
|
20
21
|
end
|
@@ -25,7 +26,7 @@
|
|
25
26
|
```
|
26
27
|
|
27
28
|
音源x2(2,80000)の中身のwavファイルでサンプリング周波数は8000Hzに設定しています.
|
28
|
-
学習同定法を用いてインパルス応答を推定するプログラムを作成しています.
|
29
|
+
学習同定法を用いてインパルス応答を推定するプログラムを[リンク内容](http://www.asp.c.dendai.ac.jp/thesis/H13_kohno.pdf)を参考にして作成しています.
|
29
30
|
x2の長さの80000までwを計算し,最後にwをプロットすることで音源のインパルス応答が取得できます.
|
30
31
|
for文のところを作成してみたのですが,
|
31
32
|
左辺と右辺の要素数が異なるため、代入を実行できません。
|
@@ -34,7 +35,7 @@
|
|
34
35
|
左辺と右辺の要素数が異なるため、代入を実行できません。
|
35
36
|
|
36
37
|
エラー: (行 16)
|
37
|
-
y(i)=w.'.*
|
38
|
+
y(i)=w.'.*xx;
|
38
39
|
|
39
40
|
>>
|
40
41
|
```
|
2
追加
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
最大配列サイズの基本設定を超えてしまう
|
body
CHANGED
@@ -64,4 +64,22 @@
|
|
64
64
|
|
65
65
|
1 1
|
66
66
|
```
|
67
|
-
多分ここが80000×400になっていないのが問題ですが,直し方がわかりません.
|
67
|
+
多分ここが80000×400になっていないのが問題ですが,直し方がわかりません.
|
68
|
+
|
69
|
+
|
70
|
+
```matlab
|
71
|
+
|
72
|
+
y=w.'.*x;
|
73
|
+
e=d-y;
|
74
|
+
w=w+(myu.*((e.*x)/(x.'.*x)));
|
75
|
+
|
76
|
+
```
|
77
|
+
またfor文をこのように直すと以下のようなエラーが出ます.
|
78
|
+
```matlab
|
79
|
+
要求された 80000x80000 (47.7GB) 配列は、最大配列サイズの基本設定 (8.0GB) を超
|
80
|
+
えています。これにより、MATLAB は反応しなくなる可能性があります。
|
81
|
+
|
82
|
+
エラー: (行 17)
|
83
|
+
w=w+(myu.*((e.*x)/(x.'.*x)));
|
84
|
+
|
85
|
+
```
|
1
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -56,4 +56,12 @@
|
|
56
56
|
>>
|
57
57
|
```
|
58
58
|
と確認しましたが,sizeは合っているように見えます.
|
59
|
-
何が問題なのでしょうか.
|
59
|
+
何が問題なのでしょうか.
|
60
|
+
```matlab
|
61
|
+
>> size(y(1))
|
62
|
+
|
63
|
+
ans =
|
64
|
+
|
65
|
+
1 1
|
66
|
+
```
|
67
|
+
多分ここが80000×400になっていないのが問題ですが,直し方がわかりません.
|