|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
编了下面这段程序,fft再ifft是可以得到原时域信号的,可是对频域信号插值之后,尽管插值前后的频域信号无论幅值还是角度都对应的很好,可奇怪的是,再ifft竟然无法得到原来的时域信号了,郁闷
大家伙给说说,问题出在哪了
附 程序
clear all
vmax=30;
v=20;
DT=10000;
n=200;%离散采样点数
maxf=20000;%Hz
N=1000;%滤波器阶数
k1=4; k2=-20; pdb=15;
[y,f1,Y]=lianxupu_tt(vmax,v,DT,n,k1,k2,pdb,maxf,N);%调用函数
%y时域模型信号 %f=离散采样频率 %Y=模型的频域信号,信号长度n
Y1=fftshift(Y);
Y1=Y1(n+1:n*2);
magY1=20*log10(abs(Y1));%幅值(d
subplot(411) plot(f1,magY1)
title('信号频谱幅值')
xlabel('频率/Hz')
ylabel('幅度(d')
subplot(412)
plot(y)
title('模型的原时域信号')
figure(2)
%插值
fs=40008;%采样频率
N=10000;%点数
df=fs/N;
f2=(-N/2:N/2-1)*df;%构造一个期望的频率离散采样结果
f3=-fliplr(f1);
f3=f3(1:n-1);
f3=[f2(1),f3,f1];%对f3填补x轴负方向的频率点,为了进行下面的插值
YY=spline(f3,Y,f2);%对频域信号Y进行插值,由原来的频率采样f3插值后对应f2
magYY=20*log10(abs(YY));
subplot(211)
magY=20*log10(abs(Y));%幅值(d
plot(f3,magY,f2,magYY)
title('信号的插值结果比较(幅值)')
legend('模型信号','插值信号')
o1=angle(Y);
o2=angle(YY);
subplot(212)
plot(f3,o1,f2,o2)
title('信号的插值结果比较(角度)')
legend('模型信号','插值信号')
figure(1)
subplot(413)
yy=real(ifft(YY));
plot(yy)
title('直接反变换得到的时域仿真信号')%经验证,可以得到原来的模型时域仿真信号
subplot(414)
y1=real(ifft(Y));
plot(y1)
title('插值后反变换得到的时域信号')%得不到原来的模型时域仿真信号? |
|