?? ar_atten.m
字號:
% Ar_atten.m
% Calculate Atmospheric and Rain Attenuation
%
% Last edited: 15 Mar 1996
%
% Attenuation parameters. First two values in each row are
% the frequency range the attenuation parameters are valid.
% fl fh sl sh wl wh
% 1 2 3 4 5 6
Att_param = [0.4 1.3 0.01 0.012 1.0e-6 0.0003;
1.3 3 0.012 0.015 0.0003 0.0013;
3 5.5 0.015 0.017 0.0013 8.000001e-3;
5.5 10 0.017 0.024 8.000001e-3 0.037;
10 15 0.024 0.055 0.037 0.083;
15 22 0.055 0.3 0.083 0.23;
22 35 0.3 0.14 0.23 0.57;
35 60 0.14 35 0.57 1.3;
60 95 35 0.8 1.3 2;
95 140 0.8 1 2 2.3;
140 240 1 14 2.3 2.2];
% Shift frequency to GHz scale and test to see which parameters to use
% for subsequent calculations. Program will still crash if freq_radar
% outside of 400MHz - 240GHz range.
%
freq_ghz = freq_radar /1000;
i = find(freq_ghz > Att_param(:,1) & freq_ghz <= Att_param(:,2));
% Use working variables to calculate the resulting attenuation
%
ax = log (Att_param(i,4)/Att_param(i,3)) / log (Att_param(i,2)/Att_param(i,1));
sx = Att_param(i,3)*((freq_ghz/Att_param(i,1))^ax);
bx = log(Att_param(i,6)/Att_param(i,5)) / log (Att_param(i,2)/Att_param(i,1));
wx = rain_fall * Att_param(i,5) * ((freq_ghz/Att_param(i,1))^bx);
el_tgt = el_tgt_deg * pi/180;
re = 3/sin(el_tgt + 0.00025/(el_tgt+0.028));
% Convert earlier calculated clear ranges to kilometers
%
rng_km = ranges_clear.* 1.854;
rx = rng_km;
rdel = 0;
done = 0;
while done==0
rx = rx - rdel;
lea = sx .* re *(1-exp(-rx ./ re));
ler = wx .* rx;
fr = 0.4343 .* log(rx ./ rng_km) + (lea + ler)/40;
dfr = (1./rx) + wx/40 + sx.*(exp(-rx./re))/40;
rdel = fr./dfr;
a = find(rdel <= 0.01);
b = length(a);
if b > 0
for i = 1:b,
rdel(a(i)) = 0;
end
end
if rdel <= 0.01
done = 1;
end
end
%swrlg_case
ar_atten_ans = [lea; ler; (rx./1.854)];
% Print Detection with Atmospheric and Weather Attenuation
fprintf('Detection Range with Atmospheric and Weather Attenuation\n\n');
fprintf('Swerling Case 0 1 ');
fprintf(' 2 3 4 1FA 3FA\n');
fprintf('Atmospheric Atten (dB) ');fprintf('%-10.2f',lea);fprintf('\n');
fprintf('Weather Atten (dB) ');fprintf('%-10.2f',ler);fprintf('\n');
if rx<50;
fprintf('Detection Range (n mi) ');fprintf('%-10.2f',rx/1.854);
else,
fprintf('Detection Range (n mi) ');fprintf('%-9.2f',rx/1.854);
end;
fprintf('\n\n\n');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -