iir filter for loop code

3 次查看(过去 30 天)
Robert Manalo
Robert Manalo 2021-10-25
评论: Mathieu NOE 2021-11-19
c1 = 8
c2 = 2
c3 = 7
Can you guys help me to find the first seven impulse response of the IIR filter with filter coefficient b0 = 0.05 * c1, b1 = 0.03 * c2, b2 = 0.02 * c3, a1 = 0.5, a2 = 0.5 using for loop code in matlab, this picture may also help
thanks <3

回答(1 个)

Mathieu NOE
Mathieu NOE 2021-10-25
helo
here you are
clc
clearvars
c1 = 8;
c2 = 2;
c3 = 7;
b0 = 0.05 * c1;
b1 = 0.03 * c2;
b2 = 0.02 * c3;
a1 = 0.5;
a2 = 0.5;
% manual for loop coding
x = [1; zeros(6,1)];
samples = length(x);
y(1) = b0*x(1) + 0 + 0 + 0 + 0;
y(2) = b0*x(2) + b1*x(1) + 0 + a1*y(1) + 0;
for k = 3:samples
y(k) = b0*x(k) + b1*x(k-1) + b2*x(k-2) + a1*y(k-1) + a2*y(k-2);
end
figure(1)
plot(y)
  10 个评论
Johnny Dela Vega
Johnny Dela Vega 2021-10-31
@Mathieu NOE Hey, can I ask you one question? I have a code for the same problem but was rejected. Can you tell me what is wrong with my code?
function y=IIR_Filter(b,a,x)
c=[4 8 1 2 3];
b0=0.05*c(4);
b1=0.03*c(3);
b2=0.02*c(2);
b=[b0 b1 b2];
a=[0.5 0.5];
x=[1 0 0 0 0 0 0];
N=length(a)-1;
M=length(b)-1;
y=zeros(1,length(x));
for n=1:length(x)
y1=0;
for k=1:N
if n-k>=1
y1=y1+a(k+1)*y(n-k);
end
end
y2=0;
for k=0:M
if n-k>=1
y2=y2+b(k+1)*x(n-k);
end
end
y(n)=-y1+y2;
end
Mathieu NOE
Mathieu NOE 2021-11-19
maybe you didn't push the "accept" button...?
all the best

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Install Products 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by