Info
此问题已关闭。 请重新打开它进行编辑或回答。
Cancelling the Echo for a Generated Function using Convolution
1 次查看(过去 30 天)
显示 更早的评论
So I generated an Echo for a function using Convolution, using the following code
[y,Fs] = audioread('Test1.wav');
%Definding Delay & attenuation_factor
------
------
------
%Definding Impluse
h1=zeros(1,delay);%Impulse
h1(delay)=attenuation_factor; %Impulse at delay
h1(1)=1;
%Generating function with echo
z=conv(y,h1);
sound(z,Fs)
Now I want to cancel this echo again, and here is what i wrote so far
%Delcaring anothr Impluse
h2= [1,(zeros(1,delay))];
h2(delay)=-attenuation_factor;
h2(1)=1;
o=conv(h2,z);
But the final output function ( o ) is still having an echo, what am i doing wrong?
And why is the final output (o) domain is still beyond the original functin as shown below![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/993815/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/993815/image.png)
2 个评论
Mathieu NOE
2022-5-11
hello
your "anti echo" is not working because it's not the inverse process of the echo
in discrete (z) equations :
when you do the echo , : Y = (1 + attenuation_factor*z^(-delay)) * X
so this is basically a FIR filter. The best inverse of that would be the IIR filter : 1 / (1 + attenuation_factor*z^(-delay))
回答(0 个)
此问题已关闭。
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!