Add Example
This commit is contained in:
Executable
+146
@@ -0,0 +1,146 @@
|
||||
clc;
|
||||
clear;
|
||||
close all;
|
||||
|
||||
%% 参数设置
|
||||
sigma_n = 0.1;
|
||||
gamma = 0.5;
|
||||
|
||||
% 信号参数
|
||||
B = 5e5; %信号带宽
|
||||
Tp = 100e-6; %脉宽100us
|
||||
fs = 2 * B; %采样频率
|
||||
Ts = 1 / fs; %采样周期
|
||||
K = B / Tp; %线性调频率
|
||||
fc = 1e8; %载波频率
|
||||
|
||||
Tr = 1e-3;
|
||||
|
||||
t = 0: 1/fs: Tr - 1/fs;
|
||||
t2 = 0: 1/fs/2: Tr - 1/fs/2;
|
||||
|
||||
c = 3e8; % 光速
|
||||
|
||||
distance_max = (Tr-Tp) * c / 2;
|
||||
|
||||
target_scattering = [0.8, 1, 0.9]; %扩展目标各点散射强度
|
||||
|
||||
|
||||
%% 生成矩阵 A
|
||||
% 生成发射信号 signal_t 及
|
||||
N = Tr * fs;
|
||||
N_high = Tp * fs;
|
||||
|
||||
signal_t = zeros(1, N);
|
||||
signal_td = zeros(1, N);
|
||||
for i = 1:N_high
|
||||
tp = (i - 1) * (1 / fs);
|
||||
signal_t(1, i) = exp(1j*2*pi*(fc*tp+0.5*K*tp.^2));
|
||||
tp2 = (i - 0.5) * (1 / fs);
|
||||
signal_td(1, i + 1) = exp(1j*2*pi*(fc*tp2+0.5*K*tp2.^2));
|
||||
end
|
||||
|
||||
A = generate_matrix_new(signal_t.', signal_td.');
|
||||
|
||||
J = A'*A;
|
||||
lambda_J=eig(J);
|
||||
|
||||
figure(1)
|
||||
spy(A)
|
||||
|
||||
|
||||
%% 生成回波 y
|
||||
% 设置目标 - 扩展目标,由三个点组成
|
||||
distance1 = 52000;
|
||||
tau1 = distance1 * 2 / c;
|
||||
n_tau1 = round(tau1 * fs);
|
||||
|
||||
alpha1 = 0.6; % 扩展目标整体散射强度
|
||||
signal_r1_t1 = zeros(1, N);
|
||||
signal_r2_t1 = zeros(1, N);
|
||||
signal_r3_t1 = zeros(1, N);
|
||||
|
||||
for i = 1:N
|
||||
temp = i - n_tau1;
|
||||
if temp >= 1 && temp <= N_high
|
||||
signal_r1_t1(1, i) = alpha1 * target_scattering(1) * signal_t(1, temp);
|
||||
if i + 1 <= N
|
||||
signal_r2_t1(1, i + 1) = alpha1 * target_scattering(2) * signal_t(1, temp);
|
||||
end
|
||||
if i + 1 <= N
|
||||
signal_r3_t1(1, i + 2) = alpha1 * target_scattering(3) * signal_t(1, temp);
|
||||
end
|
||||
end
|
||||
end
|
||||
signal_r1 = signal_r1_t1 + signal_r2_t1 + signal_r3_t1;
|
||||
|
||||
% 回波
|
||||
signal_r = signal_r1;
|
||||
|
||||
% 加入噪声
|
||||
noise = random('Normal', 0, sigma_n/sqrt(2), 1, length(signal_r)) + 1j * random('Normal', 0, sigma_n/sqrt(2), 1, length(signal_r));
|
||||
signal_r_n = signal_r + noise;
|
||||
|
||||
y = signal_r_n.';
|
||||
figure(2)
|
||||
subplot(211);
|
||||
plot(t, real(signal_t));
|
||||
title('发射信号')
|
||||
xlabel('时间')
|
||||
ylabel('幅度')
|
||||
|
||||
subplot(212);
|
||||
plot(t, real(y))
|
||||
title('接收信号(y)')
|
||||
xlabel('时间')
|
||||
ylabel('幅度')
|
||||
|
||||
%% 理论 x
|
||||
distance_node = round((distance1 * 2 / c) * fs);
|
||||
x_t = zeros(1, 2 * N);
|
||||
for i = 1: length(target_scattering)
|
||||
x_t((distance_node + i) * 2 - 1) = alpha1 * target_scattering(i);
|
||||
end
|
||||
x = x_t.';
|
||||
|
||||
figure(3)
|
||||
plot(t2, x);
|
||||
title('目标散射点(x)')
|
||||
xlabel('时间')
|
||||
ylabel('幅度')
|
||||
|
||||
|
||||
|
||||
%% 验证
|
||||
y_t = A * x;
|
||||
y_r = signal_r.';
|
||||
|
||||
figure(4)
|
||||
subplot(311);
|
||||
plot(real(y_r))
|
||||
title('实际回波')
|
||||
|
||||
subplot(312);
|
||||
plot(real(y_t));
|
||||
title('计算结果')
|
||||
|
||||
subplot(313);
|
||||
plot(abs(y_r - y_t));
|
||||
title('差异')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user