matlab的旋律 发表于 2018-5-8 12:24:23

强干扰下跳频信号的参数估计

close all
clear
clc


Fs = 10*10^3;      % 采样频率
Ts = 1/Fs;          % 采样周期
Fh = 20;         % 跳频频率
Th = 1/Fh;          % 跳频周期
SNR = 20;         % 信噪比
snr = 10^(SNR/10);% 线性信噪比
f_set = *10^2;      % 跳频频率集
noise_f = 24*10^2;                           %定频干扰频率
N = length(f_set);                                  % 跳频点数
t = 0:1/Fs:N*Th-1/Fs;                               % 时间
% 产生跳频信号,每个跳频周期对就一个频率
% 每个跳频周期的时间点为Th/Ts
for i = 1:N
    sig(1+(i-1)*fix(Th/Ts):i*fix(Th/Ts)) = sqrt(2)*cos(2*pi*f_set(i)*t(1+(i-1)*fix(Th/Ts):i*fix(Th/Ts)));
    noise_sig(1+(i-1)*fix(Th/Ts):i*fix(Th/Ts)) = sqrt(2)*cos(2*pi*noise_f*t(1+(i-1)*fix(Th/Ts):i*fix(Th/Ts)));%定频干扰
end

x = sig + noise_sig ;%加定频干扰
figure
subplot(211);
plot(t,x);
xlabel('时间 t/s');
ylabel('幅度');
title('跳频信号');
grid on;
subplot(212);
L = length(x);
NFFT = 2^nextpow2(L);
Y = abs(fft(x,NFFT));
f = (0:length(Y)-1)*Fs/length(Y);
plot(f(1:NFFT/2), 2*Y(1:NFFT/2));
xlabel('频率 f/Hz');
ylabel('|Y(f)|');
title('跳频信号频谱');
grid on;

x = x';
x = hilbert(x);
N = 2^nextpow2(length(x));
H = window(@hamming,1023);
=tfrstft(x,1:length(x),N,H);


figure
contour(t,F(1:N/2),abs(TFR(1:N/2,: )));
axis()
ylabel('归一化频率 f/Hz');
xlabel('时间 t/s');
title('STFT变换时频图');
colormap
grid on;

f = F(1:N/2);
SQTFR = abs(TFR(1:N/2,: )).^2;

ff = sum(repmat(f,1,size(SQTFR,2)).*SQTFR,1)./sum(SQTFR,1);
figure
plot(t,ff)
xlabel('时间 t/ms');
ylabel('归一化频率 f/Hz');
title('时频重心曲线')

wf = wden(ff,'sqtwolog','s','mln',3,'haar');
figure
plot(t,wf)
xlabel('时间 t/ms');
ylabel('模值');
title('小波变换结果')



页: [1]
查看完整版本: 强干扰下跳频信号的参数估计