MATLAB Answers

0

Filter of sin component of sound signal

Even Wee 님이 질문을 제출함. 18 Apr 2015
최근 활동 Even Wee 님이 편집함. 18 Apr 2015
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.

  댓글 수: 0

로그인 to comment.

답변 수: 1

Youssef Khmou 님의 답변 18 Apr 2015
Youssef Khmou 님이 편집함. 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

  댓글 수: 2

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.
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.

로그인 to comment.



Translated by