linbeth 发表于 2009-5-4 11:13

请教一个多频调制信号在重采样后做FFT的问题

一个多频调制信号,铁路上的TVM430信号,一共27个低频,我选了3个,载频1700,为了细化频谱,选了细化倍数为D=200,以下为我编的程序,最后重采样后的FFT如何能看出细化的谱线啊?不知道怎么写FFT变化后plot里的频率对应关系?求高手帮忙!
clf;
clear all;
close all;

fs = 6400;
Ws = 2 * pi * fs;
SampleTime = 1.5625;
%SampleTime = 20;
t = 0 : 1/ fs : SampleTime;

% UM2000低频发送信号
TBF_S = ;
% 28个低频正弦信号的幅度、频率和相位
%TBF_A = ;
TBF_A = ones(1, 27);
TBF_F = 0.88 : 0.64 : 17.52; % 25.68
%TBF_P = ;
TBF_P = zeros(1, 27);
TBF_W = 2 * pi .* TBF_F;
% 载频信号
Fc = 1700;
W0 = 2 * pi * Fc;
% 调频常数
K_FM = 6;
% 调频信号的幅值
U = 1;
% 原始信号
SignalMt = zeros(1, length(t) );
for i = 1 : length(t)
    sum = 0;
    for n = 1 : length(TBF_S)
      sum = sum + TBF_S(n) * TBF_A(n) * sin( ( TBF_W(n) - 2 * pi * 0.24 ) * t(i) + TBF_P(n) );
    end
    SignalMt(i) = sum;
end
figure(1)
subplot( 2,1,1);
plot(t, SignalMt );
grid on
title('原始基带信号')

% % FFT频域分析
% F = fftshift( fft(SignalMt) );
% plot( abs(F) );
% DFT频率中心单谱线分析
TBF_Resample = SignalMt( 1 : 8 : length(SignalMt) );
TBF_fsam = 800;
DFT_N = 1250;
SamplePoints = 1250;
DFT_x = TBF_Resample( 1 : SamplePoints );
DFT_m = 0 : 100;
DFT_f = TBF_fsam / DFT_N * DFT_m;
DFT_f = DFT_f + 0.24;
DFT_X = zeros( 1, length( DFT_m ) );
for i = 1 : length( DFT_m )
    sum = 0;
    for num = 1 : SamplePoints
      sum = sum +DFT_x(num) * exp( -j * 2 * pi / DFT_N * (i-1) * (num-1) );
    end
    DFT_X(i) = sum;
end
subplot(2,1,2);
stem( DFT_f( 2 : length(DFT_f) ), abs( DFT_X( 2 : length(DFT_X) ) ) );
grid on
title('原始基带信号幅度谱')


% 调制信号
E = zeros(1, length(t) );
for i = 1 : length(t)
    sum = 0; % 调制信号相位
   
    for n = 1 : length(TBF_S)
      sum = sum + TBF_S(n) * ( K_FM * TBF_A(n) / ( TBF_W(n) - 2 * pi * 0.24 ) ) * ( cos(TBF_P(n)) - cos( (TBF_W(n) - 2 * pi * 0.24) * t(i) + TBF_P(n) ) );
    end
   
    E(i) = U * cos( W0 * t(i) + sum );
end
figure(2)
subplot(2,1,1);
% 频谱分析
L =length(t);
F1 = fftshift( fft(E, L) );
W = ( -Ws / 2 + (0 : L-1) * Ws / L ) / (2 * pi);
% 画图
plot( W, abs(F1) ./ max( abs(F1) ) );
grid on
ylabel('相对幅值')
xlabel('频率/HZ')
title('UM2000频域信号')

h=exp(-j*2*pi*Fc*t);
% h=exp(-2*pi*Fc/fs*n);
X=E.*h;
subplot(2,1,2);
L = length(t)-1;
F2 = fftshift( fft(X, L) );
W = ( -Ws / 2 + (0 : L-1) * Ws / L ) / (2 * pi);
% 画图
plot( W, abs(F2) ./ max( abs(F2) ) );
grid on
ylabel('相对幅值')
xlabel('频率/HZ')
title('UM2000频域信号复调制移频')

D=250;%细化倍数
%Digital LPF
bw=fs/(2*D);
b=fir1(32,2*bw/fs);
y=filter(b,1,X);
% resampling
fs1=fs/D;
Ws1=2 * pi * fs1;
yd=zeros(1,L);
L1=length(yd)/D;
for ii=1:L1
    yd(ii)=y(ii*D);
end
Yd=fft(yd,L);
figure(3)
W1=((0 : L-1) * Ws1 / L ) / (2 * pi);
plot(W1,abs(Yd)./max(abs(Yd)));
grid on
这部分不清楚,怎么能显示出细化后的谱线?
页: [1]
查看完整版本: 请教一个多频调制信号在重采样后做FFT的问题