この画像で表されるy[n]を出力するプログラムを作成しています.
maltab
1prompt = 'What is the value of "a" ? '; 2a = input(prompt); 3prompt = 'What is the value of "b" ? '; 4b = input(prompt); 5 6N=49; 7x = [1; zeros(N,1)]; 8 9 10 11b_length=length(b); 12a_length=length(a); 13y1=zeros(1,length(x)+length(b)-1); 14y2=zeros(1,length(x)+length(a)-1); 15 16y=zeros(1,length(x)); 17for n=1:length(x) 18for k=1:b_length 19 20 y1(n+k-1)=y1(n+k-1)+(x(n)*b(k)); 21end 22 23 24for m=1:a_length 25 y2(n+m-1)=y2(n+m-1)+(y(n)*(-a(m))); 26 27 28end 29y(n)=y1(n)+y2(n); 30end 31plot(y) 32 33
このように作成したのですが,y2が更新されず常に0が入ってしまいます.
また
matlab
1g=filter(b,a,x); 2>> plot(g)
として出力してみた結果とプログラムの結果が異なるためプログラムがうまく動作していないのですが,どのようにすれば値がうまく更新され同じ出力結果が得られるのでしょうか。
matlab
1for n=1:length(x) 2for k=1:b_length 3 4 y1=y1+x(n-k+1)*b(k); 5end 6 7配列インデックスは正の整数または logical 値でなければなりません。 8 9エラー: report2_b (行 23) 10 y1=y1+x(n-k+1)*b(k); 11
このようなエラーが出てしまいます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/08 23:42