How can I write an FIR filter function
4 ビュー (過去 30 日間)
古いコメントを表示
Hi! I'm trying to write a function that performs FIR filtering without having to use the built-in function.
so I have this code at the moment.
function y = myFIR(x,h)
M = length(x);
L = length(h);
y = zeros(0,((M+L)-1));
for n = 1:M+1
for k = 1:L+1
Y1 = (h(k).*x(n-k));
y(n)= sum(Y1);
end
end
where (h) is an array consisting of the impulse response, (x) is an array consisting of the input sequence and (y) is a vector containing the filtered samples.
but I have been getting the error below;
Array indices must be positive integers or logical values.
Error in myFIR (line 7)
Y1 = (h(k).*x(n-k));
I have really tried everything I could but it just doesnt seem to go. I will really be glad if anyone can help figure out the problem.
Thank you.
2 件のコメント
KALYAN ACHARJYA
2019 年 2 月 12 日
編集済み: KALYAN ACHARJYA
2019 年 2 月 12 日
Can you define x and h inputs, examples?
回答 (1 件)
KALYAN ACHARJYA
2019 年 2 月 12 日
編集済み: KALYAN ACHARJYA
2019 年 2 月 12 日
My suggestion to avoid the error, In the loop, during first iterations when when n=1 and k=1, then following statement
Y1 = (h(k).*x(n-k));
x(n-k) becomes x(0), which is not allowed in indexing vectors. x(Positives only)
参考
カテゴリ
Help Center および File Exchange で Digital Filtering についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!