声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1178|回复: 0

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

[复制链接]
发表于 2009-5-4 11:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
一个多频调制信号,铁路上的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 = [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 1, 0, 0];
% 28个低频正弦信号的幅度、频率和相位
%TBF_A = [1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.46, 1.66, 1.85, 1.95, 2.15, 2.34, 2.44, 2.63, 2.73, 2.93, 3.12, 3.22, 3.42, 3.61, 3.71, 3.91, 4.10, 4.20, 4.39, 13.96];
TBF_A = ones(1, 27);
TBF_F = 0.88 : 0.64 : 17.52; % 25.68
%TBF_P = [1.28, 1.94, 4.07, 4.22, 3.24, 3.04, 1.47, 1.15, 1.13, 0.97, 4.29, 3.09, 2.82, 3.26, 3.93, 1.64, 0.91, 1.79, 1.47, 4.83, 2.13, 4.00, 2.25, 5.30, 5.25, 3.06, 4.69];
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

这部分不清楚,怎么能显示出细化后的谱线?
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-26 09:49 , Processed in 0.058331 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表