How can I write an FIR filter function
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Aliyu Suleiman Liman
el 12 de Feb. de 2019
Comentada: Aliyu Suleiman Liman
el 12 de Feb. de 2019
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 comentarios
KALYAN ACHARJYA
el 12 de Feb. de 2019
Editada: KALYAN ACHARJYA
el 12 de Feb. de 2019
Can you define x and h inputs, examples?
Respuestas (1)
KALYAN ACHARJYA
el 12 de Feb. de 2019
Editada: KALYAN ACHARJYA
el 12 de Feb. de 2019
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)
Ver también
Categorías
Más información sobre Digital Filtering en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!