?? main36.m
字號:
mesh(Delta_Rst_Phi_Result);
xlabel('Phi');
ylabel('Theta');
zlabel('Delt_R/Delt_Phi');
subplot(3,2,3);
mesh(Delta_Fd_Theta_Result);
xlabel('Phi');
ylabel('Theta');
zlabel('Delt_Fd/Delt_Theta');
subplot(3,2,6);
mesh(Delta_Fd_Phi_Result);
xlabel('Phi');
ylabel('Theta');
zlabel('Delt_Fd/Delt_Phi');
%% 對相交區(qū)域進行分割
% 求得分隔區(qū)域的間隔大小
Delta_Theta_From_Rst_All = Radar_Range_Resolution ./ (Delta_Rst_Theta_Result+1e-20);
Delta_Theta_From_Fd_All = Radar_Fd_Resolution ./ (Delta_Fd_Theta_Result+1e-20);
Delta_Phi_From_Rst_All = Radar_Range_Resolution ./ (Delta_Rst_Phi_Result+1e-20);
Delta_Phi_From_Fd_All = Radar_Fd_Resolution ./ (Delta_Fd_Phi_Result+1e-20);
Delta_Theta_From_Rst_All = abs(Delta_Theta_From_Rst_All);
Delta_Theta_From_Fd_All = abs(Delta_Theta_From_Fd_All);
Delta_Phi_From_Rst_All = abs(Delta_Phi_From_Rst_All);
Delta_Phi_From_Fd_All =abs(Delta_Phi_From_Fd_All);
clear Delta_Rst_Theta_Result Delta_Fd_Theta_Result Delta_Rst_Phi_Result Delta_Fd_Phi_Result;
% 比較獲得最終的分割間距
Min_Delta_Theta_Get = min(min(min(Delta_Theta_From_Rst_All)), min(min(Delta_Theta_From_Fd_All)));
Min_Delta_Phi_Get = min(min(min(Delta_Phi_From_Rst_All)), min(min(Delta_Phi_From_Fd_All)));
% min(min(Delta_Theta_From_Rst_All))
% min(min(Delta_Theta_From_Fd_All))
% min(min(Delta_Phi_From_Rst_All))
% min(min(Delta_Phi_From_Fd_All))
Min_Delta_Theta_Get = Min_Delta_Theta_Get*Min_Delta_Theta_Factor;
Min_Delta_Phi_Get = Min_Delta_Phi_Get*Min_Delta_Phi_Factor;
clear Delta_Theta_From_Rst_All Delta_Theta_From_Rst_All Delta_Phi_From_Rst_All Delta_Phi_From_Rst_All ...
Delta_Phi_From_Fd_All Delta_Theta_From_Fd_All;
% 對相交區(qū)域進行分割,并得到各個分割區(qū)域的相關(guān)位置信息
% Phi應(yīng)該的分割個數(shù)
Delta_Phi_Num = floor((Accurate_Intersect_Data_Phi_Radian(end) - Accurate_Intersect_Data_Phi_Radian(1)) / ...
Min_Delta_Phi_Get);
% 每個Phi對應(yīng)的Theta分割個數(shù)
Num_Delta_Theta_Of_EachPhi = zeros(1, Delta_Phi_Num);
Num_Tmp = 500;
% Theta角度,中心位置
Theta_Of_EachPart_Set = zeros(Delta_Phi_Num, Num_Tmp);
% Phi角度,中心位置
Phi_Of_EachPart_Set = zeros(Delta_Phi_Num, Num_Tmp);
% 擦地角,中心位置
Beta_S_Of_EachPart_Set = zeros(Delta_Phi_Num, Num_Tmp);
% 面積
Area_Of_EachPart_Set = zeros(Delta_Phi_Num, Num_Tmp);
% 徑向距離
R_Of_EachPart_Set = zeros(Delta_Phi_Num, Num_Tmp);
% 最小徑向距離
Rst_Min = Const_Earth_Re;
% 多普勒頻移
Fd_Of_EachPart_Set = zeros(Delta_Phi_Num, Num_Tmp);
for w1 = 1 : 1 : Delta_Phi_Num
Phi_Central_Tmp = Accurate_Intersect_Data_Phi_Radian(1) + (w1-1/2)*Min_Delta_Phi_Get;
% 計算對于當前Phi的Theta可以劃分的Theta區(qū)域個數(shù)
Upside_Theta_Radian_Tmp = interp1(Accurate_Intersect_Data_Phi_Radian, Accurate_Intersect_Data_Upside_Theta_Radian,...
Phi_Central_Tmp);
Downside_Theta_Radian_Tmp = interp1(Accurate_Intersect_Data_Phi_Radian, Accurate_Intersect_Data_Downside_Theta_Radian,...
Phi_Central_Tmp);
Tmp = (Upside_Theta_Radian_Tmp - Downside_Theta_Radian_Tmp) / Min_Delta_Theta_Get;
Tmp = round(Tmp);
Num_Delta_Theta_Of_EachPhi(w1) = Tmp;
for w2 = 1 : 1 : Num_Delta_Theta_Of_EachPhi(w1)
% Theta角度
Theta_Central_Tmp = Downside_Theta_Radian_Tmp + (w2-1/2)*Min_Delta_Theta_Get;
Theta_Of_EachPart_Set(w1, w2) = Theta_Central_Tmp;
% Phi角度
Phi_Of_EachPart_Set(w1, w2) = Phi_Central_Tmp;
% 面積
Area_Of_EachPart_Set(w1, w2) = Const_Earth_Re^2 * Min_Delta_Phi_Get * Min_Delta_Theta_Get;
% 徑向距離和徑向速度
[Delta_Rst_Theta, Delta_Rst_Phi, Delta_Vst_Theta, Delta_Vst_Phi, Rst, Vst] = ...
Calculate_R_V_DeltaR_DeltaV(Satellite_r, Const_Earth_Re, Satellite_Theta_s_Radian, ...
Satellite_Phi_s_Radian, Satellite_Theta_i_Radian, Earth_We, Satellite_Wp, ...
Theta_Central_Tmp, Phi_Central_Tmp);
R_Of_EachPart_Set(w1, w2) = Rst;
if(Rst_Min - Rst > 0)
Rst_Min = Rst;
end;
% 多普勒頻移
Fd_Of_EachPart_Set(w1, w2) = -2*Vst / Const_Wave_Length;
% 擦地角
Beta_S_Of_EachPart_Set(w1, w2) = acos((Rst^2 + Const_Earth_Re^2 - Satellite_r^2) / (2*Rst*Const_Earth_Re)) - pi/2;
end;
% Phi_Central_Tmp
% Upside_Theta_Radian_Tmp
% Downside_Theta_Radian_Tmp
% figure;
% Num_Delta_Theta_Of_EachPhi(w1)
% plot(Theta_Of_EachPart_Set(w1, 1:Num_Delta_Theta_Of_EachPhi(w1)), ...
% Fd_Of_EachPart_Set(w1, 1:Num_Delta_Theta_Of_EachPhi(w1)));
% grid on;
% pause;
% close all;
% clc;
end;
fprintf('按任意鍵繼續(xù)\n');
% figure;
% plot(Num_Delta_Theta_Of_EachPhi);
% grid on;
pause;
% figure;
% mesh(R_Of_EachPart_Set);
% xlabel('Phi(經(jīng)度)');
% ylabel('Theta(緯度)');
% grid on;
% title('相對距離');
%
% figure;
% mesh(Fd_Of_EachPart_Set);
% xlabel('Phi(經(jīng)度)');
% ylabel('Theta(緯度)');
% grid on;
% title('多普勒頻移');
fprintf('地面散射點到衛(wèi)星間距范圍: %5.9f ——%5.9f\n', Rst_Min, max(max(R_Of_EachPart_Set)));
fprintf('地面散射點多普勒頻率范圍: %5.9f——%5.9f\n', min(min(Fd_Of_EachPart_Set)), max(max(Fd_Of_EachPart_Set)));
% pause;
% figure;
% plot(Num_Delta_Theta_Of_EachPhi);
% figure;
% plot(Theta_Of_EachPart_Set );
% figure;
% plot(Phi_Of_EachPart_Set );
% figure;
% plot(R_Of_EachPart_Set);
% figure;
% plot(Fd_Of_EachPart_Set);
%% 根據(jù)所分的小區(qū)間仿真得到回波信號
% 得到每個散射區(qū)間的回波信號幅度和相位信息
[Amp_Of_EachPart_Set, PhaseOrg_Of_EachPart_Set] = Get_Amp_Phase_Of_EachPart(...
Num_Delta_Theta_Of_EachPhi, Theta_Of_EachPart_Set, Phi_Of_EachPart_Set ,...
Beta_S_Of_EachPart_Set , Area_Of_EachPart_Set, R_Of_EachPart_Set, ...
Const_Earth_Re, FA2D_Factor_Matrix, FA2D_Adder_Matrix, ...
Antenna_Delta_Phi_w_Radian, Antenna_Delta_Theta_w_Radian, Factor_0D, IsRealSimulate);
% 為了避免產(chǎn)生數(shù)據(jù)量過大,獲取感興趣的距離范圍,注意,這里沒有考慮距離模糊問題
% 每個PRT回波的基準點
R_Max = max(max(R_Of_EachPart_Set));
R_Min = Rst_Min;
R_Max_Point = ceil(2 * R_Max/3e8 * Radar_Fs);
R_Min_Point = floor(2 * R_Min/3e8 * Radar_Fs);
R_Based_Point = R_Min_Point - 1;
% 每個PRT對應(yīng)的有效采樣點數(shù)
PRT_Valid_Point_Num = R_Max_Point - R_Min_Point;
% 仿真得到的回波信號,1列對應(yīng)一個PRT回波
Simulate_Echo_Signal_Set = zeros(PRT_Valid_Point_Num, Radar_Coherent_PRT_Num);
% 用于數(shù)據(jù)處理時的緩存
Simulate_Echo_Signal_Tmp = zeros(PRT_Valid_Point_Num, Radar_Coherent_PRT_Num);
% 分別求得每個散射區(qū)間反射的信號,并且相加后得到總體的回波信號
for w1 = 1 : 1 : Delta_Phi_Num
Num_Delta_Theta_Of_EachPhi_Tmp = Num_Delta_Theta_Of_EachPhi(w1);
fprintf('(%d) / %d\n',w1,Delta_Phi_Num);
for w2 = 1 : 1 : Num_Delta_Theta_Of_EachPhi_Tmp
Theta_Of_EachPart_Tmp = Theta_Of_EachPart_Set(w1, w2);
Phi_Of_EachPart_Tmp = Phi_Of_EachPart_Set(w1, w2);
Area_Of_EachPart_Tmp = Area_Of_EachPart_Set(w1, w2);
R_Of_EachPart_Tmp = R_Of_EachPart_Set(w1, w2);
Fd_Of_EachPart_Tmp = Fd_Of_EachPart_Set(w1, w2);
Amp_Of_EachPart_Tmp = Amp_Of_EachPart_Set(w1, w2);
PhaseOrg_Of_EachPart_Tmp = PhaseOrg_Of_EachPart_Set(w1, w2);
% 清空緩存中的數(shù)據(jù)
Simulate_Echo_Signal_Tmp = Simulate_Echo_Signal_Tmp * 0;
% 求得每個散射區(qū)的間距對應(yīng)的延遲,這里求得的延遲是以R_Based_Point作為參考的
Delay_Point = round(2*R_Of_EachPart_Tmp/3e8*Radar_Fs) - R_Based_Point;
% 這里將其轉(zhuǎn)換為索引
Delay_Point_Index = Delay_Point;
Simulate_Echo_Signal_Tmp(Delay_Point_Index : 1 : Delay_Point_Index+Radar_Sample_Point_Of_Pluse_Width-1,...
:) = Amp_Of_EachPart_Tmp;
% 產(chǎn)生多普勒頻移對應(yīng)的信號
Time_Tmp = (0 : 1 : Radar_Coherent_PRT_Num-1) * Radar_PRT;
Fd_Signal_Tmp = exp(j*(2*pi*Fd_Of_EachPart_Tmp*Time_Tmp + PhaseOrg_Of_EachPart_Tmp));
for w3 = 1 : 1 : Radar_Coherent_PRT_Num
Simulate_Echo_Signal_Tmp(:, w3) = Simulate_Echo_Signal_Tmp(:, w3) * Fd_Signal_Tmp(w3);
end;
% 將每個散射單元的反射信號合成相加
Simulate_Echo_Signal_Set = Simulate_Echo_Signal_Set + Simulate_Echo_Signal_Tmp;
% [R_Num, C_Num] = size(Simulate_Echo_Signal_Set);
% Signal_Tmp = reshape(Simulate_Echo_Signal_Set, 1, R_Num*C_Num);
% figure;
% plot(Signal_Tmp);
% pause;
% close all;
end;
end;
% [R_Num, C_Num] = size(Simulate_Echo_Signal_Set);
% Signal_Tmp = reshape(Simulate_Echo_Signal_Set, 1, R_Num*C_Num);
% figure;
% plot(Signal_Tmp);
%% 對回波信號進行相干累加處理
% 一列對應(yīng)一個距離波門
Simulate_Echo_Signal_Set = Simulate_Echo_Signal_Set.';
% 進行FFT變換
Simulate_Echo_Signal_Set_FFT = fft(Simulate_Echo_Signal_Set);
% 求得FFT變換結(jié)果每列對應(yīng)的距離
[R_Num, C_Num] = size(Simulate_Echo_Signal_Set_FFT);
R_Point_Index = R_Based_Point + (1 : 1 : C_Num);
R_Index = R_Point_Index * 1/Radar_Fs * 3e8 / 2;
% 不進行距離模糊處理的結(jié)果
Freq_Index = (-Radar_Coherent_PRT_Num/2 : 1 : Radar_Coherent_PRT_Num/2-1)*...
1/(Radar_PRT*Radar_Coherent_PRT_Num);
[R_Index_Org, Freq_Index_Org] = meshgrid(R_Index, Freq_Index);
Simulate_Echo_Signal_Set_FFT_ABS_Org = fftshift(abs(Simulate_Echo_Signal_Set_FFT), 1);
% figure;
% mesh(R_Index_Org, Freq_Index_Org, Simulate_Echo_Signal_Set_FFT_ABS_Org);
figure;
contour(R_Index_Org, Freq_Index_Org, Simulate_Echo_Signal_Set_FFT_ABS_Org);
xlabel('距離波門(m)');
ylabel('頻率(Hz)');
zlabel('幅度譜');
title('地球雜波的距離頻譜二維圖(原始的,沒有距離模糊)');
% 最大不模糊距離
PRT_Distance = Radar_PRT * 3e8 / 2;
% 得到雷達所檢測到的距離,對距離進行模糊處理
R_Index = mod(R_Index, PRT_Distance);
figure;
plot(R_Index);
grid on;
title('通過模糊處理得到的距離');
% 對原始回波數(shù)據(jù)進行距離模糊處理,即將同一個距離單元內(nèi)的信號相加
Simulate_Echo_Signal_Set_FFT_Tmp = zeros(size(Simulate_Echo_Signal_Set_FFT));
R_Index_Tmp = unique(R_Index);
for w1 = 1: 1 : length(R_Index_Tmp)
[Index_Tmp] = find(R_Index == R_Index_Tmp(w1));
Simulate_Echo_Signal_Set_FFT_Tmp(:, w1) = sum(Simulate_Echo_Signal_Set_FFT(:, Index_Tmp), 2);
end;
Simulate_Echo_Signal_Set_FFT = Simulate_Echo_Signal_Set_FFT_Tmp(:, 1 : length(R_Index_Tmp));
R_Index = R_Index_Tmp;
clear Simulate_Echo_Signal_Set_FFT_Tmp;
% 求模
Simulate_Echo_Signal_Set_FFT_ABS = fftshift(abs(Simulate_Echo_Signal_Set_FFT), 1);
Freq_Index = (-Radar_Coherent_PRT_Num/2 : 1 : Radar_Coherent_PRT_Num/2-1)*...
1/(Radar_PRT*Radar_Coherent_PRT_Num);
[R_Index, Freq_Index] = meshgrid(R_Index, Freq_Index);
figure;
mesh(R_Index, Freq_Index, Simulate_Echo_Signal_Set_FFT_ABS);
xlabel('距離波門(m)');
ylabel('頻率(Hz)');
zlabel('幅度譜');
title('地球雜波的距離頻譜二維圖');
grid on;
fprintf('距離-多普勒二維圖距離范圍: %5.9f——%5.9f\n', min(min(R_Index)), max(max(R_Index)));
fprintf('距離-多普勒二維圖多普勒頻率范圍: %5.9f——%5.9f\n', min(min(Freq_Index)), max(max(Freq_Index)));
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -