这只是我所做的概述(假设我的所有尺寸都合适):</ p>
(code that imports audio to read audio as function x)
X=fft(x);
(code to define time t and frequency f)
H=L+M*exp(-1i*2*pi*f*N)+O*exp(-1i*2*pi*f*P);
% This is where it gets tricky
% In the frequency domain I have the function above where f is the frequency
% variable and L M N O P are arbitrary values
Y=X.*H;
% again assume dimensions fit
y=real(ifftshift(ifft(Y)*length(t)));
%Taking the inverse fft and fftshift was the only way I could get back a signal
% Once again assume the dimensions fit
我会发布图片,但我需要至少10个代表: 我会尽力在下面描述:
|
||
|||||
||
|
这是我的原始输入信号x
| |
||| |||
| |
这是我的输出y
(现在,如果我重力(t-t0)输出y并将其添加到原始我得到以下内容)
|
|| |
||||| |||
|| |
|
这是合法的吗?还是我只是拉着自己的腿?
答案 0 :(得分:0)
从根本上说,你使用正确的工具来创造一个回声,所以你得到的是合理的。考虑可以描述回声和输入信号与delta函数的卷积。
$$ Y(t)= X(t)\ ast \ delta(t-t_ {echo})$$
在频域中,卷积表示为乘法。此外,delta函数变为wave $ e ^ {i 2 \ pi t_ {echo} f} $。请参阅傅里叶变换的维基http://en.wikipedia.org/wiki/Fourier_transform。你的H函数基本上是对应于增量的这些波中的三个(常数是$ e ^ {i 2 \ pi 0 f} $。)。当您将X
乘以H
时,您正在复制和翻译x
。因此,在时域中,您应该获得与O
,M
和L
成比例的三个信号副本。
一旦你掌握了这些一般概念,那么你需要关注实施细节。密切关注如何定义频率以确保它与FFT生成的点匹配。测试您是否对实现不确定的一种好方法是逐步构建它。设置H=1
,此时您的输出应与您的输入相匹配。然后只尝试一个波形并验证您是否获得了预期的精确回波。一般来说,通过使用更简单的输入信号(纯cos或带有信封的cos,可以让你轻松看到移位)来测试和检查可能更容易。