魔女 发表于 2013-8-16 13:52

时域信号需要满足什么条件,才能利用IFFT进行恢复?

下面是两段程序,其中红色字体为唯一的不同之处,程序一能恢复而程序二不能恢复的原因是什么?
程序一
clear;
N=1000;
fs=10000000;
n=0:N-1;
t=n/fs;
fc=200000;
y=cos(2*pi*fc*t);
figure
plot(t,y);
grid;
df=fs/N;
n2=1:N/2+1;
ff=(n2-1)*df;
x=fft(y,N);
z=abs(x(n2));
pyy=angle(x(n2));
Pyy=180/pi*pyy;
z(2:end)=z(2:end).*exp(j*Pyy(2:end));
z=;
xr=real(ifft(z,'symmetric'));
figure;
plot(t,xr,'r');
grid;

程序二
clear;
N=1000;
fs=10000000;
n=0:N-1;
t=n/fs;
fc=200000;
t0=2/fc;
y=exp(-(t-0.0000250).^2/t0^2).*cos(2*pi*fc*t);
figure
plot(t,y);
grid;
df=fs/N;
n2=1:N/2+1;
ff=(n2-1)*df;
x=fft(y,N);
z=abs(x(n2));
pyy=angle(x(n2));
Pyy=180/pi*pyy;
z(2:end)=z(2:end).*exp(j*Pyy(2:end));
z=;
xr=real(ifft(z,'symmetric'));
figure
plot(t,xr,'r');
grid;

魔女 发表于 2013-8-16 19:56

程序二中经过IFFT恢复的时域信号与原始信号不一样,为什么呢?

yghit08 发表于 2013-8-16 20:11

魔女 发表于 2013-8-16 19:56 static/image/common/back.gif
程序二中经过IFFT恢复的时域信号与原始信号不一样,为什么呢?

贴图上来看!
不过我也不太懂!
检查自己的程序是否正确。
不可能。对于随机信号,逆变换后时域上完全匹配貌似不可能(牛人给解释);对于一般的正弦信号几乎完全重合(理所当然认为的)

赵强生 发表于 2013-8-16 22:39

路过,学习一下

魔女 发表于 2013-8-18 10:22

yghit08 发表于 2013-8-16 20:11 static/image/common/back.gif
贴图上来看!
不过我也不太懂!
检查自己的程序是否正确。



这就是两个程序的图片,原因好像是程序二中的时域信号为非周期信号,不知道对不对,谢谢yghit08的支持!

a243876462 发表于 2014-7-11 15:44

程序错了,这句exp(j*Pyy(2:end)),里面的角度因该是弧度不是。改成pyy就对了。

yugang2010 发表于 2014-7-11 18:07

傅里叶变换只能处理周期平稳信号,正逆变换,前后基本不会变化。

fft之后的频域信号,只记录原信号的幅值与相位。

当信号为非平稳时,ifft会把信号当做全时间信号恢复出来。

你可以试一下,前段是周期信号,后段是0的信号。ifft恢复出来的依然是全时间段的周期信号。

傅里叶变换是一种全局变换,处理非平稳信号很捉襟见肘。

你可以用短时傅里叶变换和逆短时傅里叶变换,对非平稳信号进行处理。恢复效果会很好。

ccc5458 发表于 2014-7-21 18:55

采用短时傅立叶变换,试试看效果会不会好点

qingchen12398 发表于 2014-8-5 20:15

yghit08 发表于 2013-8-16 20:11
贴图上来看!
不过我也不太懂!
检查自己的程序是否正确。


能不能邀请我去清影PT 我的邮箱liubao12398@126.com
页: [1]
查看完整版本: 时域信号需要满足什么条件,才能利用IFFT进行恢复?