Hey

This is a project that i am working on, there we are suppose to filter out a sin-component from a small sound signal.

I have the signal "x" already, this "x" contains the sound signal og the energy-spectral-density.

And I have done all the calculations for the filter and signal, and ended up with this differential equation:

y = 2*a*cos(W_s)*y(n-1) - a.^2*y(n-2) - b0*x(n) - b0*2*cos(W_s)*x(n-1) + b0*x(n-2);

So my next step is to get this signal y(n) and check and se if the sin-component is gone. I know that I should be loop like this:

for n = 3:length(x)

y(n) = 2*a*cos(W_s)*y(n-1) - a.^2*y(n-2) - b0*x(n) - b0*2*cos(W_s)*x(n-1) + b0*x(n-2);

end

But i am getting this error: Attempted to access y(2); index out of bounds because numel(y)=1.

Answer by Youssef Khmou
on 18 Apr 2015

Edited by Youssef Khmou
on 18 Apr 2015

Concerning the equation of y, can you explain its origin. As for the error, initial condition must be set :

y=zeros(size(x));

y(1)=x(1);

y(2)=x(2);

% for loop

Even Wee
on 18 Apr 2015

Sorry, i have the y(n). It is an array of data like x(n), that contains the sound signal with the sin-component that need to be filtered.

So the differential equation is the differential-equation of the filter. And it should be causal, therefore I need to begin on n = 3.

Even Wee
on 18 Apr 2015

Okay.. now i got it to work, and I manage to also filter the sin-component. It was a sign error in my differential-equation, it should be like this

y = 2*a*cos(W_s)*y(n-1) - a.^2*y(n-2) + b0*x(n) - b0*2*cos(W_s)*x(n-1) + b0*x(n-2);

And i think "y" was not initialized when i got this error: "Attempted to access y(2); index out of bounds because numel(y)=1."

But now it works as it should :)

Thank you.

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.