zhxcumt 发表于 2007-6-23 21:42

ifft的问题

对一音频信号做过1024点的fft,怎么样才能用ifft还原回原来的时域信号
比如:
x1=wavread('shiyan.wav');
y1=fft(x1,1024);   
再用ifft怎么样才能由y1得到x1呢
望有人帮忙解决,表示感谢

happy 发表于 2007-6-23 21:49

real(ifft(y1))

zhxcumt 发表于 2007-6-23 23:08

谢谢,OK

zhxcumt 发表于 2007-6-23 23:26

不过还是不对啊,x1是126799*1,而real(ifft(y1))为1024*1

suffer 发表于 2007-6-23 23:38

y1=fft(x1,1024);

表示你只用信号的前1024个点fft
显然ifft后还是1024

happy 发表于 2007-6-24 20:05

这是你前面的问题造成的,如suffer所说

改为y1=fft(x1);

songzy41 发表于 2007-6-25 06:39

如果数据太长,也可分段作FFT和IFFT。

yimao 发表于 2007-6-25 15:25

原帖由 songzy41 于 2007-6-25 06:39 发表 http://www.chinavib.com/forum/images/common/back.gif
如果数据太长,也可分段作FFT和IFFT。

可以分段作fft ?

songzy41 发表于 2007-6-25 17:09

原帖由 yimao 于 2007-6-25 15:25 发表 http://www.chinavib.com/forum/images/common/back.gif


可以分段作fft ?
可以分段做。这里给一个简单的例子,仅分二段来做(用二段只是为了说明问题,实际可分任意多的段),可以看到把二段分别做后再拼接,一样可满足要求。
N=10000;
n=1:N;
x=sin(2*pi*0.005*(n-1));
y=zeros(1,N);
for i=1 : 2
    y1=x(1024*(i-1)+1:1024*i);
    Y1=fft(y1);
    y2=real(ifft(Y1));
    y(1024*(i-1)+1:1024*i)=y2;
end
subplot 211; plot(x(1:2048)); grid;
xlabel('原始信号');
axis();
subplot 212; plot(y(1:2048)); grid;
axis();
xlabel('分段fft和ifft后拼接成的信号');

zhj0231984 发表于 2008-7-4 20:58

这种分段FFT 只对简单的余弦信号有用吧??

songzy41 发表于 2008-7-5 09:14

原帖由 zhj0231984 于 2008-7-4 20:58 发表 http://www.chinavib.com/forum/images/common/back.gif
这种分段FFT 只对简单的余弦信号有用吧??
不受余弦信号的限制,任何信号都可以,这是因为FFT的可逆性。

wwbeyondww 发表于 2008-7-7 15:06

回复 11楼 的帖子

呵呵,fft和ifft的叠加性;
但是有啥用呢?

jgchen1973 发表于 2008-7-7 17:03

请问楼主

你正变换后,再逆变换回去后,信号能复原吗?我关心的是幅值能变换回原来的幅值吗?
页: [1]
查看完整版本: ifft的问题