How can I write an FIR filter function

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
KALYAN ACHARJYA 2019 年 2 月 12 日
編集済み: KALYAN ACHARJYA 2019 年 2 月 12 日
Can you define x and h inputs, examples?
Aliyu Suleiman Liman
Aliyu Suleiman Liman 2019 年 2 月 12 日
Yh sure!
h = { 0.2 0.3 0.2}
x = {1 2 3 4 5 6 7 8 9 10}

サインインしてコメントする。

回答 (1 件)

KALYAN ACHARJYA
KALYAN ACHARJYA 2019 年 2 月 12 日
編集済み: KALYAN ACHARJYA 2019 年 2 月 12 日

0 投票

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)

1 件のコメント

Aliyu Suleiman Liman
Aliyu Suleiman Liman 2019 年 2 月 12 日
I tried using (k=0:L) but I was still getting the same error

サインインしてコメントする。

カテゴリ

製品

リリース

R2018a

質問済み:

2019 年 2 月 12 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by