⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rjv2.m

📁 此程序给出了不同情况的雷达距离测量仿真平台
💻 M
字号:
% rjv2.m
% Range Calculations in a Jamming Environment
%
%  This program calculates radar ranges in a jamming environment.  It works
% with both Stand-off jamming and self-screening jamming for steady and Swerling type
% targets with frequency agility, coherent integration and standard atmosphere/rain
% attenuation
%
% Code translated from BASIC "RGJMAT.BAS" 
%
% Last edited: 28 August 1997.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
clear
clc
echo off
%
% Set user variables.  The user should change the following variables as needed for the
% simulation they are running.  Descriptions of the variables follow.
%
% Radar related:
%
trans_pwr_radar = 8; 		% Transmitter power of radar - kW
freq_radar = 10000;			% Radar's frequency - MHz
pulse_width = 6.67;			% Radar's pulse width -	microsecs
GTDB_radar = 29;				% Transmitter gain of radar -	dB
GRDB_radar = 29;				% Receiving gain for radar - dB
GRDB_sl_radar = 3;			% Side-lobe of radar - dBi
noise_fig_radar = 6; 		% Noise figure of receiver - dB
loss_radar_dB = 15;			% Radar losses	- dB
PRF = 7950;						% Pulse repetition freq - pps
prob_det = 0.90;				% Probability of detection < 1
prob_false_alarm = 1e-6; 	% Probability of false alarm < 1
BW_dop = 1000;					% Doppler filter BW - Hz
BW_fa = 0;						% Frequency agility BW - MHz
Azimuth_bw = 1.4;          % Azimuth beamwidth - degrees
az_rate = 360;		      	% Azimuth scan rate - degrees/sec

% MENU Driven Radar Parameters
% Use a dialog box to get input
title = 'Radar Parameters Page 1';
prompt = {'Transmitter power (kW)', 'frequency (MHz)',...
      'pulse width (microsecs)', ...
      'Transmit antenna gain (dB)', 'Receive antenna gain (dB)'...
      'Receive antenna sidelobe (dBi)', 'Noise Figure (dB)', ...
      'Losses (dB)', 'PRF (Hz)'};
default = {trans_pwr_radar, freq_radar, pulse_width, GTDB_radar,...
      GRDB_radar, GRDB_sl_radar, noise_fig_radar, loss_radar_dB, PRF,};
response = inputdlg(prompt, title, 1, default);
fields = {'trans_pwr_radar','freq_radar','pulse_width','GTDB_radar',...
      'GRDB_radar','GRDB_sl_radar','noise_fig_radar','loss_radar_dB','PRF'};
input = cell2struct(response,fields,1);

% Convert cell structure created by dialog box back to numbers
trans_pwr_radar = str2num(input.trans_pwr_radar);
freq_radar = str2num(input.freq_radar);
pulse_width = str2num(input.pulse_width);
GTDB_radar = str2num(input.GTDB_radar);
GRDB_radar = str2num(input.GRDB_radar);
GRDB_sl_radar = str2num(input.GRDB_sl_radar);
noise_fig_radar = str2num(input.noise_fig_radar);
loss_radar_dB = str2num(input.loss_radar_dB);
PRF = str2num(input.PRF);

clear input response fields default prompt title;

title = 'Radar Parameters Page 2';
prompt = {'Probability of detection (<1)', ...
      'Probability of false alarm (<1)', 'Doppler filter bandwidth (Hz)',...
      'Frequency agility bandwidth (MHz)', 'Azimuth beamwidth (degrees)',...
   	'Azimuth Scan rate (degrees/sec)'};
default = {prob_det, prob_false_alarm, BW_dop, BW_fa, Azimuth_bw, az_rate};
response = inputdlg(prompt, title, 1, default);
fields = {'prob_det','prob_false_alarm','BW_dop','BW_fa','Azimuth_bw','az_rate'};
input = cell2struct(response,fields,1);

% Convert cell structure created by dialog box back to numbers
prob_det = str2num(input.prob_det);
prob_false_alarm = str2num(input.prob_false_alarm);
BW_dop = str2num(input.BW_dop);
BW_fa = str2num(input.BW_fa);
Azimuth_bw = str2num(input.Azimuth_bw);
az_rate = str2num(input.az_rate);

clear input response fields default prompt title;
% End Menu for Radar Parameters

% Target related:
%
RCS = 1; 		   	% Radar cross section		m^2
el_tgt_deg = 0.0;		% Elevation of target 		degrees
target_length = 15;	% Length of target      	m

% Other
%
rain_fall = 0;			% Rain fall rate	        mm/hr

% MENU for Target and Atmosphere information
title = 'Target and Atmosphere information';
prompt = {'RCS (m^2)', 'Elevation of target (degrees)',...
      'Length of target (m)', 'Rain fall rate (mm/hr)'};
default = {RCS, el_tgt_deg, target_length, rain_fall};
response = inputdlg(prompt, title, 1, default);
fields = {'RCS', 'el_tgt_deg', 'target_length', 'rain_fall'};
input = cell2struct(response,fields,1);

% Convert cell structure created by dialog box back to numbers
RCS = str2num(input.RCS);
el_tgt_deg = str2num(input.el_tgt_deg);
target_length = str2num(input.target_length);
rain_fall = str2num(input.rain_fall);

clear input response fields default prompt title;
% End menu for Target and Atmosphere Information

% Select jamming type (enter 1 for yes, 0 for no; can select none, one, or both):
%
jamming_type = menu('Select jamming type', 'Stand off',...
   'Selfscreening', 'None', 'Both');
switch jamming_type
case 1
   % Stand off
   SOJ = 1; 		% Stand-off boolean
   SSJ = 0;			% Selfscreening boolean
case 2 
   % Selfscreening
   SSJ = 1;			% Selfscreening boolean
   SOJ = 0;			% Stand-off boolean
case 3 
   % No Jamming
   SSJ = 0;			% Selfscreening boolean
   SOJ = 0;			% Stand-off boolean
case 4
   % Both
   SOJ = 1;
   SSJ = 1;
end

% Enter characteristics for selfscreening Jamming.  If not, selected, values won't be used.
%
SSJ_pwr_jam = 10;		% SSJ power of jammer		W
SSJ_gain_dB = 0;		% Gain of SS jammer in dB	dB
SSJ_bw = 20;			% Bandwidth of SSJ		MHz
SSJ_loss_dB = 7;		% Losses with SSJ		dB

if SSJ == 1
   % MENU for selfscreening Jamming chars
   title = 'Selfscreening Jamming information';
   prompt = {'Power (W)', 'Antenna Gain (dB)',...
         'Bandwidth (MHz)', 'Losses (dB)'};
   default = {SSJ_pwr_jam,SSJ_gain_dB,SSJ_bw,SSJ_loss_dB};
   response = inputdlg(prompt, title, 1, default);
   fields = {'SSJ_pwr_jam', 'SSJ_gain_dB', 'SSJ_bw', 'SSJ_loss_dB'};
   input = cell2struct(response,fields,1);
   
   % Convert cell structure created by dialog box back to numbers
   SSJ_pwr_jam = str2num(input.SSJ_pwr_jam);
   SSJ_gain_dB = str2num(input.SSJ_gain_dB);
   SSJ_bw = str2num(input.SSJ_bw);
   SSJ_loss_dB = str2num(input.SSJ_loss_dB);
   
   clear input response fields default prompt title;
   % End MENU for selfscreening Jamming chars
end

% Enter characteristics for stand-off Jamming.  If not, selected, values won't be used.
%
% Each array must be equal and there must
% be a value for each stand-off jammer you
% wish to simulate
%
SOJ_pwr_jam = [1000 1000 1000 1000 1000];
				% SOJ power of jammers		W
SOJ_gain_dB = [13 13 13 13 13];
				% Gain of SO jammer in dB	dB
SOJ_bw = [100 100 100 100 100];
				% Bandwidth of SOJ's		Mhz
jam_range = [20 20 20 20 20];
				% Range of jammer		NMI

jam_height = [20000 20000 20000 20000 20000];
				% Height of jammer		ft
SOJ_loss_dB = [7 7 7 7 7];
				% Losses with SOJ's 		dB
% MENU for Stand off jamming input
               
if SOJ==1
   num_jams = length(SOJ_pwr_jam);
   title = 'Stand off Jamming information';
   prompt = {'Number of Jammers'};
   default = {num_jams};
   response = inputdlg(prompt, title, 1, default);
   fields = {'num_jams'};
   input = cell2struct(response,fields,1);
   num_jams = str2num(input.num_jams);
   clear input response fields default prompt title;
   
   if num_jams ~= length(SOJ_pwr_jam)
      SOJ_pwr_jam = ones(1,num_jams).*SOJ_pwr_jam(1);
      SOJ_gain_dB = ones(1,num_jams).*SOJ_gain_dB(1);
      SOJ_bw = ones(1,num_jams).*SOJ_bw(1);
      jam_range = ones(1,num_jams).*jam_range(1);
      jam_height = ones(1,num_jams).*jam_height(1);
      SOJ_loss_dB = ones(1,num_jams).*SOJ_loss_dB(1);
   end % if num_jams
   
   for loop = 1:num_jams
      title = ['Standoff Jammer #' num2str(loop)];
      prompt = {'Power (W)', 'Gain (dB)', 'Bandwidth (MHz)',...
            'Range (nm)', 'Height (ft)', 'Loss (dB)'};
      default = {SOJ_pwr_jam(loop), SOJ_gain_dB(loop),...
            SOJ_bw(loop), jam_range(loop), jam_height(loop),...
            SOJ_loss_dB(loop)};
      response = inputdlg(prompt, title, 1, default);
      fields = {'SOJ_pwr_jam','SOJ_gain_dB','SOJ_bw','jam_range',...
            'jam_height','SOJ_loss_dB'};
      input = cell2struct(response,fields,1);
      
      % Convert cell structure created by dialog box back to numbers
      SOJ_pwr_jam(loop) = str2num(input.SOJ_pwr_jam);
      SOJ_gain_dB(loop) = str2num(input.SOJ_gain_dB);
      SOJ_bw(loop) = str2num(input.SOJ_bw);
      jam_range(loop) = str2num(input.jam_range);
      jam_height(loop) = str2num(input.jam_height);
      SOJ_loss_dB(loop) = str2num(input.SOJ_loss_dB);
      
      clear input response fields default prompt title;

   end % for loop
end % if SOJ

      
   % End MENU for Stand off Jamming chars

               

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% STOP EDITING.  ONLY PROGRAM FOLLOWS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Begin Main
%

% Convert radar gain, loss, noise to ratios
%
loss_radar = db_ratio(loss_radar_dB);
GT_radar = db_ratio(GTDB_radar);
GR_radar = db_ratio(GRDB_radar);
noise_factor_radar = db_ratio(noise_fig_radar);

% Calculate system input noise temp
%
sys_noise_temp = 290 * (noise_factor_radar - 1) + 150;  % in K

% Calculate range without jamming, FA, etc (S/N = 1)
%
range_index = 129.2 * ((trans_pwr_radar * pulse_width * GT_radar * GR_radar * RCS) / ...
         (freq_radar^2 * sys_noise_temp * loss_radar))^.25;

% Calculate number of pulses
%

non_coh_pulses = (Azimuth_bw/az_rate) * BW_dop;
coh_pulses = PRF/BW_dop;

% If target length is greater than zero,computes number of independent 
% pulses for FA radars
%
if target_length > 0 
	N_exp = 1 + (BW_fa/(150 / target_length));
   else N_exp = non_coh_pulses;
end

% Determine detectability factors
%
det_fact;

% Calculate ranges for the different target types, clear, no 
% atmospheric or weather attenuation accounted for here.
%

swrlg_case= ['     0        1          2         3         4        1fa        3fa'];

ranges_clear = range_index * 10.^((-det_facts)/40);

% echo on
% Now, the atmospheric attenuation and rain attenuation is 
% calcuated.  First, the Swerling cases being calculated are listed.
% Then under ar_atten_ans, row 1 is the atmospheric attenuation (dB)
% and row 2 is the rain attenuation (dB).  The 3rd row contains the 
% affected ranges (NMI).  Under after_jam_ans, the meaning of the rows
% are the same as for the attenuation matrix.
% echo off
ar_atten;

% Effects of Jamming...
%
if SSJ==1
	pwrj_density = SSJ_pwr_jam/SSJ_bw;
	SSJ_gain = db_ratio(SSJ_gain_dB);	
	SSJ_loss = db_ratio(SSJ_loss_dB);	

% Range with just self-screening jamming
%
   rng_ssj_only = 0.0048116 * sqrt(trans_pwr_radar * GT_radar * RCS * pulse_width ./ ...
             (pwrj_density .* SSJ_gain .* (loss_radar/SSJ_loss)));
	if SOJ==1
		soj_eff;
	end
	jam_eff;
end
if (SOJ==1)&(SSJ==0)
	soj_eff;
	rng_ssj_only = rs00;
	jam_eff;
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -