[イメージ説明])### 前提・実現したいこと
初心者です.
MATLABでconvを使わずに畳み込み積分をしたいです.
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
y(n)=の式において
配列インデックスは正の整数または logical 値でなければなりません。
と表示されます.何が問題なのでしょうか.
エラーメッセージ 配列インデックスは正の整数または logical 値でなければなりません。 y(n)=y(n)+g(k)*x(n-k+1); ### 該当のソースコード MATLAB [x fs]=audioread('*****'); n_length=length(x); [g fs]=audioread('*****'); g_length=length(g); y=zeros(1,n_length+g_length-1); for n=1:n_length for k=1:n_length-g_length+1 y(n)=y(n)+g(k)*x(n-k+1); end end ソースコード
試したこと
x(n-k+1)の中身を変更したりしましたが,どうしても0になります.
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
MATLAB
1 2for n=1:n_length + g_length -1 3 4 if n>n_length 5 left = n-n_length+1; 6 else 7 left=1; 8 end 9 if n < g_length 10 right = n; 11 else 12 right = g_length; 13 for k=left:right 14y(n)=y(n)+g(k)*x(n-k+1); 15 16 17 end 18 19end
ここにより詳細な情報を記載してください。 教えていただいたように修正したのですがこのプログラムだとgがxより小さい時しか動作しません.常に成り立つプログラムにするにはどのように変更すれば良いでしょうか」.
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/21 06:34 編集
2021/04/21 12:08
2021/04/21 17:09
2021/04/22 00:01
2021/04/22 00:08