时域波形应该是一个两周期或者是三周期的调制信号,但是,波形分开分布于时域序列的首位两端。
想知道出现这种情况的原因。期盼高手的指点!
编程思路:输入两种信号,一个是时域的调制的两周期信号,做fft转换到频域;一个是直接在频域形成高斯包络(频谱,没有相位信息)。两者都与信道函数的频域序列(复数)相乘,所得结果序列,根据fft后频域信号共轭对称的特性扩展,然后进行ifft得到时域信号。
程序如下(昨天发的帖子不见代码了,重新发布)
clear;clc
f=1000; %信号主频
fs=6000; %采样频率
pn=2; %输入信号的周期数
nt=0:pn*fs/f-1;
for nt1=0:pn*fs/f-1;
% dt=1/(f*length(nt));-1
inw(1,nt1+1)=exp(-(nt1/(floor(pn*fs/f/2))-1)^2);
end %信号调制的包络
dt=1/fs;
om=2*pi*f;
in2=sin(om*nt*dt);
in=inw.*in2; %产生调制的两周期信号
mm=[in,zeros(1,2048-pn*fs/f)];% 补足2048个点,以便求fft
load ftfp1k3k.mat %导入信道传递函数(频谱值,复数)
ftfp=[zeros(1,49) ftfp 0];
dfq=fs/2/1024;f0=1;b=0.4;
for nfn=0:1024;
sou(1,nfn+1)=exp(-((nfn*(dfq/1000)-f0)/b)^2);
end %产生高斯包络,用于两种不同输入信号的对比
mm1=fft(mm);
mmza=ftfp.*sou;
mmzb=mm1(1,1:1025).*ftfp.*sou;
mma=[mmza,fliplr(conj(mmza(2:1024)))];
mmb=[mmzb,fliplr(conj(mmzb(2:1024)))];
yya=fft(mma,2048);
yyb=ifft(mma,2048);
yyc=fft(mmb,2048);
yyd=ifft(mmb,2048);
% yyc=[yyc(1025:2048) yyc(1:1024)];
% yyd=[yyd(1025:2048) yyd(1:1024)]; ifft后信号的首尾连接,成一个完整波形
figure
subplot(211)
plot(real(mm))
title ('real(mm)')
subplot(212)
plot(abs(mm1))
title ('abs(mm1)')
figure
subplot(211)
plot(real(ftfp))
title ('real(ftfp)')
subplot(212)
plot(imag(ftfp))
title ('imag(ftfp)')
figure %(1:n1/2)(1:n1/2)(1:n2/2)(1:n2/2)
subplot(211)
plot(real(yya))
title ('source time fft')
subplot(212)
plot(real(yyb))
title ('source time ifft')
figure
subplot(211)
plot(real(yyc))
title ('mm time fft')
subplot(212)
plot(real(yyd))
title ('mm time ifft')
[ 本帖最后由 xhfzjlx 于 2009-4-9 09:25 编辑 ] |