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

質問編集履歴

5

修正

2021/06/29 08:09

投稿

kaeruuuun
kaeruuuun

スコア19

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=x2(i:i+filter_length-1);
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

修正

2021/06/29 08:09

投稿

kaeruuuun
kaeruuuun

スコア19

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

追加

2021/06/29 08:05

投稿

kaeruuuun
kaeruuuun

スコア19

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.'.*x;
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.'.*x;
38
+ y(i)=w.'.*xx;
38
39
 
39
40
  >>
40
41
  ```

2

追加

2021/06/29 08:04

投稿

kaeruuuun
kaeruuuun

スコア19

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

追加

2021/06/29 07:21

投稿

kaeruuuun
kaeruuuun

スコア19

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になっていないのが問題ですが,直し方がわかりません.