Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

# Filter of sin component of sound signal

1 Ansicht (letzte 30 Tage)
Even Wee am 18 Apr. 2015
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
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.

### Antworten (1)

Youssef Khmou am 18 Apr. 2015
Bearbeitet: Youssef Khmou am 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 Kommentare1 älteren Kommentar anzeigen1 älteren Kommentar ausblenden
Even Wee am 18 Apr. 2015
Bearbeitet: Even Wee am 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.

### Community Treasure Hunt

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

Start Hunting!

Translated by