![](/files/books/160/oblozhka-knigi-energeticheskiy-raschet-kanala-dalney-troposfernoy-radiosvyazi-programma-dlya-evm-374800.jpg)
Текст книги "Энергетический расчет канала дальней тропосферной радиосвязи (Программа для ЭВМ)"
Автор книги: Владимир Шлома
сообщить о нарушении
Текущая страница: 1 (всего у книги 2 страниц)
Владимир Шлома
Энергетический расчет канала дальней тропосферной радиосвязи (Программа для ЭВМ)
Реферат
Программа предназначена для проведения на ЭВМ энергетического расчета канала связи дальней тропосферной радиосвязи по двум методикам. Расчет радиосвязи производится при различных видах модуляций, для любого времени года и для любого места, выбранного на карте. Программа работает в среде Matlab.
Программа обеспечивает выполнение следующих функций:
–
расчет затухания в свободном пространстве при реальных антеннах;
–
расчет быстрых замираний;
–
расчет медленных замираний;
–
расчет медианных затуханий;
–
расчет полного затухания;
–
расчет медианной мощности сигнала на выходе приемника;
–
расчет мощности сигнала на входе приемника;
–
расчет энергетического запаса трассы;
–
расчет предельной дальности связи;
–
расчет отношения сигнал/шум на входе приемника;
–
расчет вероятности ошибки при заданном виде модуляции.
Тип ЭВМ: IBM PC-совместимые ПК.
Язык: Matlab.
IDE: MatlabR2014b.
ОС: Windows XP/Vista/7/8/10.
Объем исполнимого файла: 1,4 Мб.
Исходный код программы
main.m
function varargout = main(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, …
'gui_Singleton', gui_Singleton, …
'gui_OpeningFcn', @main_OpeningFcn, …
'gui_OutputFcn', @main_OutputFcn, …
'gui_LayoutFcn', [] , …
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function main_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
global Nk
global tipcan
global n
global Tm
global kan
global Sez
global Tp
global Lk
Lk=1;
Tp=1;
Sez=1;
kan=2;
Tm=1;
n=1;
tipcan=1;
Nk=1;
set(handles.uipanel13,'visible','on');
set(handles.uipanel12,'visible','off');
guidata(hObject, handles);
function varargout = main_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function pushbutton2_Callback(hObject, eventdata, handles)
global Sez
if Sez ==1;
picture();
end
if Sez ==2;
picture_2();
end
if Sez ==3;
picture_3();
end
function edit14_Callback(hObject, eventdata, handles)
function edit14_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function popupmenu2_Callback(hObject, eventdata, handles)
global Nk
contents = get(hObject,'Value');
switch contents
case 1
Nk=1;
case 2
Nk = 2;
case 3
Nk = 3;
case 4
Nk = 4;
case 5
Nk = 5;
case 6
Nk = 6;
case 7
Nk = 7;
otherwise
end
function popupmenu2_CreateFcn(hObject, ~, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function pushbutton3_Callback(hObject, eventdata, handles)
picture_3();
function listbox1_Callback(hObject, eventdata, handles)
contents = get(hObject,'Value');
global TIPp
switch contents
case 1
TIPp=1;
case 2
TIPp = 2;
end
function listbox1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit8_Callback(hObject, eventdata, handles)
function edit8_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit9_Callback(hObject, eventdata, handles)
function edit9_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit10_Callback(hObject, eventdata, handles)
function edit10_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit11_Callback(hObject, eventdata, handles)
function edit11_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit12_Callback(hObject, eventdata, handles)
function edit12_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit13_Callback(hObject, eventdata, handles)
function edit13_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit1_Callback(hObject, eventdata, handles)
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit2_Callback(hObject, eventdata, handles)
function edit2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit3_Callback(hObject, eventdata, handles)
function edit3_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit4_Callback(hObject, eventdata, handles)
function edit4_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit5_Callback(hObject, eventdata, handles)
function edit5_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit6_Callback(hObject, eventdata, handles)
function edit6_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit7_Callback(hObject, eventdata, handles)
function edit7_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit21_Callback(hObject, eventdata, handles)
function edit21_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit22_Callback(hObject, eventdata, handles)
function edit22_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function popupmenu1_Callback(hObject, eventdata, handles)
contents = get(hObject,'Value');
global n
switch contents
case 1
n=1;
case 2
n = 2;
case 3
n = 4;
end
function popupmenu1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function radiobutton5_Callback(hObject, eventdata, handles)
global tipcan
if get (handles.radiobutton5,'value') == 1
set(handles.radiobutton6,'value',0);
set(handles.uipanel13,'visible','off');
set(handles.uipanel12,'visible','on');
tipcan=2;
end
function radiobutton6_Callback(hObject, eventdata, handles)
global tipcan
if get (handles.radiobutton6,'value') == 1
set(handles.radiobutton5,'value',0);
set(handles.uipanel13,'visible','on');
set(handles.uipanel12,'visible','off');
tipcan=1;
end
function listbox6_Callback(hObject, eventdata, handles)
global Tm
contents = get(hObject,'Value');
switch contents
case 1
Tm=1;
case 2
Tm = 2;
case 3
Tm = 3;
case 4
Tm = 4;
case 5
Tm = 5;
otherwise
end
function listbox6_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function listbox7_Callback(hObject, eventdata, handles)
global kan
contents = get(hObject,'Value');
switch contents
case 1
kan=2;
case 2
kan = 1;
otherwise
end
function listbox7_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function listbox10_Callback(hObject, eventdata, handles)
global Sez
contents = get(hObject,'Value');
switch contents
case 1
Sez=1;
case 2
Sez = 2;
case 3
Sez = 3;
otherwise
end
function listbox10_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function listbox11_Callback(hObject, eventdata, handles)
global Tp
contents = get(hObject,'Value');
switch contents
case 1
Tp=1;
case 2
Tp = 2;
case 3
Tp = 3;
case 4
Tp = 4;
otherwise
end
function listbox11_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function pushbutton1_Callback(hObject, eventdata, handles)
global Pvh1vt
global Lm1z
global Pvh1med
global L2z
global L2
global Pvh2
global h02
global Zap2
global h0t1
global Lz
global h01
global L1
global Zap1
global Rpred
global Lbz
global L0
global Lmz
global Pvh2medvt
global tipcan
global n
global TIPp
global Tm
global kan
global Sez
global Tp
global L0r
global L2med
global Pvh2vt
global m
global h0t2
global Pcht1
global Nk
global Pch2
global Lk
f = str2num(char(get(handles.edit1,'String')))
P=str2num(char(get(handles.edit2,'String'))); Pfr=str2double(char(get(handles.edit3,'String')));
Gr=str2num(char(get(handles.edit4,'String')));
a=str2double(char(get(handles.edit5,'String')));
h=str2num(char(get(handles.edit6,'String')));
Ugr=str2num(char(get(handles.edit7,'String')));
Fe=str2double(char(get(handles.edit8,'String')));
Pfp=str2double(char(get(handles.edit9,'String')));
Gp=str2num(char(get(handles.edit10,'String')));
Ugp=str2num(char(get(handles.edit13,'String')));
dfk=str2num(char(get(handles.edit22,'String')));
nk=str2num(char(get(handles.edit21,'String')));
m=str2num(char(get(handles.edit23,'String')));
V=str2num(char(get(handles.edit24,'String')));
R=150;
dF=40;
Fk=nk*3100-1250;
Po=1e-4;
Tpr=99.0;
if Sez==1
disp('Введите климатические потери для района работы радиолинии в соответствии с картой')
Lk=str2num(char(get(handles.edit14,'String'))) ;
elseif Sez==2
Lk=str2num(char(get(handles.edit14,'String')));
end
l=30000/f; L0=22+20*log10(R*1e5/l);
L0r=22+20*log10(R*1e5/l)-Gr-Gp-Pfr-Pfp; disp(['L0r=', num2str(L0r),' дБ (потери в свободном пространстве при реальных антеннах)']);
Lmed=62.92*exp(-((l+18.19)/174)^2)+(0.07608*l^(-0.4984)+0.06596)*R; sig=5.116*exp(-((R-205.7)/577.5)^2);
if Sez==2
Lmed=Lmed-12;
sig=4.676*exp(-((R-124.9)/332.4)^2)+3.165*exp(-((R-382)/508.3)^2);
elseif Sez==3
Lmed=Lmed-6;
sig=6.118*exp(-((R-158.6)/547.8)^2); end
if tipcan==2
[Lbz]=Lbzam(Tpr,n);
sig1=0.177*exp(0.2585*sig)-23.48*exp(-0.2856*sig); F=0;
for x=0:0.5:30;
F=1/2+1/2*erf(log(10^(x/20))/(10^(sig1/20)));
if F>=Tpr/100
break;
end
end
Lmz=x;
Lz=Lbz+Lmz;
if Tm==1
B=10*log10(-4/n*log(2^n*Po
elseif Tm==2
B=10*log10(-2/n*log(2^n*Po));
elseif Tm==3 || Tm==4 || Tm==5
B=10*log10(-1/n*log(2^n*Po));
end
disp(['Lbz=', num2str(Lbz),' дБ (потери от быстрых замираний)']);
disp(['Lmz=', num2str(Lmz),' дБ (потери от медленных замираний)']);
elseif tipcan==1
B=35;
if sig<3
sig=3;
elseif sig>7
sig=7;
end
sigma=fix(sig);
[ Lz1 ] = Lzam(Tpr, n, sigma);
sigma=fix(sig)+1;
if sigma>7
Lz2=Lz1;
else
[ Lz2 ] = Lzam(Tpr, n, sigma);
end
sigdr=sig-fix(sig);
Lz=Lz1+(Lz2-Lz1)*sigdr;
end
disp(['Lz=', num2str(Lz),' дБ (потери от медленных и быстрых замираний)']);
delta=Ugr+Ugp+0.056*sqrt(h);
if abs(R-300) R1=300; elseif abs(R-250) R1=250; elseif abs(R-200) R1=200; elseif abs(R-150) R1=150; else R1=100; end if R1==100 a1=10.09; b1=0.2266; c1=-10.33; d1=-1.994; elseif R1==150 a1=9.399; b1=0.1913; c1=-9.604; d1=-1.576; elseif R1==200 a1=7.04; b1=0.2457; c1=-7.011; d1=-1.612; elseif R1==250 a1=7.807; b1=0.1683; c1=-7.757; d1=-1.013; elseif R1==300 a1=7.073; b1=0.2235; c1=-7.159; d1=-1.404; end Lp=a1*exp(b1*delta)+c1*exp(d1*delta); X=h*100/l; if X<12 if abs(R-400) R2=400; elseif abs(R-300) R2=300; elseif abs(R-200) R2=200; elseif abs(R-150) R2=150; else R2=100; end if R2==100 a1=1.983e15; b1=-54.05; c1=9.514; a2=18.74; b2=-6.452; c2=11.95; elseif R2==150 a1=1.661e15; b1=-45.48; c1=8.023; a2=14.88; b2=-3.284; c2=8.104; elseif R2==200 a1=1.439e9; b1=-52.15; c1=12.28; a2=3.78; b2=3.267; c2=3.428; elseif R2==300 a1=7835; b1=-4.066; c1=3.974; a2=-7425; b2=-3.92; c2=3.917; elseif R2==400 a1=8.829e13; b1=-47.8; c1=9.207; a2=-4457; b2=-6.454; c2=3.497; end Lh=a1*exp(-((X-b1)/c1)^2)+a2*exp(-((X-b2)/c2)^2); else Lh=0; end La=0.07*exp(0.055*(Gr+Gp)); Ldop=Lmed+Lz+Lp+Lh+La+Lk; L1m=L0r+Ldop; Lm1m=L1m-Lz; Lm1c=Lm1m+4.676*exp(-((R-124.9)/332.4)^2)+3.165*exp(-((R-3828)/508.3)^2); Lm1g=Lm1c-14.96*exp(-((R-74.66)/492.7)^2 if Tp==4 Lm1z=Lm1g; elseif Tp==3 ||Tp==1 Lm1z=Lm1m; else Lm1z=Lm1c; end L1=Lm1z+Lz; disp(['L1=', num2str(L1),' дБ (полное затухание)']); Pvh1=10*log10(P)-L1; Pvh1vt=10^(Pvh1/10); disp(['Pvh1=', num2str(Pvh1),' дБ (мощность сигнала на входе приемника)']); disp(['Pvh1=', num2str(Pvh1vt),' вт (мощность сигнала на входе приемника)']); if kan==1|| tipcan==1 disp(['L1med=', num2str(Lm1z),' дБ (медианные потери для заданного периода оценки)']); Pvh1med=10^((10*log10(P)-Lm1z)/10); disp(['Pvh1med=', num2str(Pvh1med),' вт (медианная мощность сигнала на входе приемника)']); Pch1=4e-21*10^(Fe/10)*Nk*3100; Pcht1=6975e-24*10^(Fe/10)*(Fk/dfk)^2/Pvh1vt; h0t1=10*log10(1e-3/Pcht1); h01=1e-3/Pcht1; disp(['h01=', num2str(h01),'(отношение с/ш на входе детектора)']); disp(['h0t1=', num2str(h0t1),' дБ (отношение с/ш на выходе тлф канала)']); disp(['Pcht1=', num2str(Pcht1),' Вт (мощность шума в тлф канале, в точке, где Рс=1мВт)']); disp(['Pch1=', num2str(Pch1),' Вт (мощность шума на входе приемника при частотном уплотнении)']); elseif kan==2 && tipcan==2 Pch1=4e-21*10^(Fe/10)*V*1000; h01=(10^(Pvh1/10))/Pch1; disp(['h01=', num2str(h01),'(отношение с/ш на входе приемника и на входе детектора)']); L1m=Lm1z+Lmz; disp(['L1med=', num2str(L1m),' дБ (затухание тлг канала без быстрых замираний)']); Pvh1med=10^((10*log10(P)-L1m)/10); disp(['Pvh1med=', num2str(Pvh1med),' Вт (медианная мощность сигнала на входе приемника тлг канала)']); disp(['Pch1=', num2str(Pch1),' Вт (мощность шума на входе приемника в Вт при непосредственной модуляции)']); end Lpred=10*log10(P)-10*log10(Pch1)-B; disp(['Lpred=', num2str(Lpred),' дБ (допустимое значение полных потерь)']); Zap1=Lpred-L1; disp(['Zap1=', num2str(Zap1),' дБ (энергетический запас трассы)']); if Zap1<1 && Zap1>0.5 Rpred=R; else Lp=Ldop-Lmed; if abs(Zap1)<3 Kd=L0r/((L1-Lp)*2); else Kd=L0r/(L1-Lp); end Rpred=l*1e-5*10^((L0+Kd*(Zap1-0.7))/20)/(4*pi); end disp(['Rpred=', num2str(Rpred),' км (предельная дальность связи)']); disp('Введите № климата 1-6 в соответствии с картой, или 7 – морской') if Nk==1 Ma=39.60; Ya=0.33; Ur=3; elseif Nk==2 || Nk==5 Ma=29.73; Ya=0.27; Ur=1; elseif Nk==3 Ma=19.30; Ya=0.32; Ur=4; elseif Nk==4 Ma=38.50; Ya=0.27; Ur=5; elseif Nk==6 Ma=33.20; Ya=0.27; Ur=1; elseif Nk==7 Ma=26.00; Ya=0.27; Ur=2; end tet=((Ugr+Ugp)*pi*1e3)/180+0.12*R; Hn=1e-3*tet*R/4; hn=4e-6*tet^2*6370/24; Ln=20*log10(5+Ya*Hn)+4.34*Ya*hn; ds=8.4933*tet; if Ur==1 Y90=-2.2-(8.1-2.3e-4*min(f,4000))*exp(-0.137*hn); elseif Ur==2 Y90=-9.5-3*exp(-0.137*hn); elseif Ur==3 if ds<100 Y90=-8.2; elseif 100 Y90=1.006e-8*ds^3-2.569e-5*ds^2+0.02242*ds-10.2; else Y90=-3.4; end elseif Ur==4 if ds<100 Y90=-10.845; elseif 100 Y90=-4.5e-7*ds^3+4.45e-4*ds^2-0.122*ds-2.645; else Y90=-8.4; end elseif Ur==5 if ds<100 Y90=-11.5; elseif 100 Y90=-8.519e-8*ds^3+7.444e-5*ds^2+4.18e-4*ds-12.1; else Y90=-4; end end Cq=1.473e14*exp(-((Tpr-108.8)/1.534)^2)-0.2272*exp(-((Tpr-95.58)/7.786)^2)+9.047*exp(-((Tpr-153.3)/44.08)^2); Yq=Cq*Y90; La=0.07*exp(0.055*(Gr+Gp)); L2g=Ma+30*log10(f)+10*log10(R)+30*log10(tet)+Ln+La-Gr-Gp-Pfr-Pfp-Yq; dq=R+8.5*((Ugr+Ugp)*pi*1e3)/180; if abs(Tpr-50) q=50; elseif abs(Tpr-90) q=90; elseif abs(Tpr-95) q=95; elseif abs(Tpr-99) q=99; else q=99.9; end if Nk==1 if q==50 p1=-4.238e-7; p2=-0.0008043; p3=4.185; elseif q==90 p1=3.111e-7; p2=-0.001963; p3=4.108; elseif q==95 p1=7.556e-7; p2=-0.002476; p3=3.956; elseif q==99 p1=4.225e-7; p2=-0.002412; p3=3.701; elseif q==99.9 p1=-3.766e-8; p2=-0.00114; p3=3.072; end elseif Nk==2 || Nk==3 if q==50 p1=2.506e-6; p2=-0.006031; p3=7.07; elseif q==90 p1=2.376e-6; p2=-0.005205; p3=5.933; elseif q==95 p1=1.857e-6; p2=-0.004377; p3=5.44; elseif q==99 p1=1.009e-6; p2=-0.003069; p3=4.821; elseif q==99.9 p1=2.279e-7; p2=-0.001305; p3=3.59; end elseif Nk==4 if q==50 p1=4.952e-6; p2=-0.01447; p3=12.99; elseif q==90 p1=4.596e-6; p2=-0.01175; p3=10.12; elseif q==95 p1=4.776e-6; p2=-0.01076; p3=8.707; elseif q==99 p1=2.23e-6; p2=-0.00675; p3=6.837; elseif q==99.9 p1=2.229e-6; p2=-0.005639; p3=5.548; end elseif Nk==5||Nk==6||Nk==7 if q==50 p1=5.358e-6; p2=-0.1255; p3=10.25; elseif q==90 p1=5.507e-6; p2=-0.0118; p3=9.033; elseif q==95 p1=3.981e-6; p2=-0.00935; p3=7.91; elseif q==99 p1=3.349e-6; p2=-0.008022; p3=7.169; elseif q==99.9 p1=2.489e-7; p2=-0.006297; p3=6.122; end end dL=p1*dq^2+p2*dq+p3; L2m=L2g+dL; L2c=L2m+4.676*exp(-((R-124.9)/332.4)^2)+3.165*exp(-((R-3828)/508.3)^2); if Tp==4 L2med=L2g; elseif Tp==3 L2med=L2m; else L2med=L2c; end [Lbz]=Lbzam(Tpr,n); L2=L2med+Lbz; Pvh2med=10*log10(P)-L2med; Pvh2medvt=10^(Pvh2med/10); Pvh2=10*log10(P)-L2; Pvh2vt=10^(Pvh2/10); disp(['L2med=', num2str(L2med),' дБ (медианные потери для заданного периода)']); disp(['L2=', num2str(L2),' дБ (полные потери для заданного периода с учетом релеевских замираний)']); disp(['Pvh2med=', num2str(Pvh2medvt),' Вт (медианная мощность сигнала на входе)']); disp(['Pvh2=', num2str(Pvh2vt),' Вт (мощность сигнала на входе)']); if kan==1|| tipcan==1 Pch2=4e-21*10^(Fe/10)*nk*3100 Pcht2=6975e-24*10^(Fe/10)*(Fk/dfk)^2/Pvh2vt; h0t2=10*log10(1e-3/Pcht2); h02=1e-3/Pcht2; disp(['h02=', num2str(h02)]),'(отношение с/ш на входе детектора)'; disp(['h0t2=', num2str(h0t2),' дБ (отношение с/ш на выходе тлф канала)']); elseif kan==2 && tipcan==2 Pch2=4e-21*10^(Fe/10)*V*1000; h02=(10^(Pvh2/10))/Pch2; disp(['h02=', num2str(h02),'(отношение с/ш на входе приемника и на входе детектора)']); end Zap2=Lpred-L2; disp(['Zap2=', num2str(Zap2),' дБ (энергетический запас трассы)']); error=0; if error==0 if f <600 || f>6000 msgbox('Рабочая частота введена некорректно') error= error+1 end if P<0 || P >20000 msgbox('Мощность ПРД введена некорректно') error= error+1 end if Pfr>0 || Pfr <-10 msgbox('Потери в ПРД фидере введены некорректно') error= error+1 end if Gr <0 || Gr>70 msgbox('Усиление антенны введено некорректно') error= error+1 end if a<0 || a >10 msgbox('Ширина ДН антенны введена некорректно') error= error+1 end if h<0 || h >20 msgbox('Высота подъёма антенны введена некорректно') error= error+1 end if Ugr<0 || Ugr >5 msgbox('Угол горизонта введён некорректно') error= error+1 end if n<1 || n>2 && n<4 || n>4 msgbox('Краткость разнесения введена некорректно') error= error+1 end if Fe <0 || Fe > 20 msgbox('Коэффициент шума введен некорректно') error= error+1 end if Pfp>0 || Pfp <-10 msgbox('Потери в ПРМ введены некорректно') error= error+1 end if Gp <0 || Gp>70 msgbox('Усиление антенны введено некорректно') error= error+1 end if Ugp<0 || Ugp >5 msgbox('Угол горизонта введен некорректно') error= error+1 end end if error==0; if tipcan==2; if Tm==1 LK_data_AM(); elseif Tm==2 LK_data_ChM(); elseif Tm==3 LK_data_FM(); elseif Tm==4 LK_data_OFT(); elseif Tm==5 LK_data_OFDM(); end elseif tipcan==1; LK_data_v02(); end end function edit19_Callback(hObject, eventdata, handles) function edit19_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit20_Callback(hObject, eventdata, handles) function edit20_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function listbox2_Callback(hObject, eventdata, handles) function listbox2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit15_Callback(hObject, eventdata, handles) function edit15_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit16_Callback(hObject, eventdata, handles) function edit16_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function listbox3_Callback(hObject, eventdata, handles) function listbox3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function radiobutton1_Callback(hObject, eventdata, handles) function radiobutton2_Callback(hObject, eventdata, handles) function edit23_Callback(hObject, eventdata, handles) function edit23_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function edit24_Callback(hObject, eventdata, handles) function edit24_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end LbZam.m function [ Lbz ] = Lbzam(Tpr,n) if n==1 Lbz=abs(20*log10(0.8414*sqrt(-2*log(Tpr/100)))); elseif n==2 pp2.form='pp'; pp2.breaks=[50 70 80 90 95 98 99 99.5000 99.9000 99.9900]; pp2.coefs=[3.84210275826828e-05,0,0.0796329235178138,-3.70000622094116;-8.80037940540999e-05,0.00230526165496097,0.125738156617033,-1.79997952992342;0.000378860333770322,-0.000334852166662026,0.145442251500023,-0.400075592311095;0.00209556468655813,0.0110309578464476,0.252403308297879,1.39972203979325;0.00544230028577507,0.0424644281448196,0.519880238254215,3.19945811326360;1.31340755735463,0.0914451307167953,0.921608914839060,5.28822078904555;-0.630095933072249,4.03166780278070,5.04472184833655,7.61468239195604;-1.03894174768381,3.08652390317233,8.60381770131306,11.0661982751855;-6.81405113315541,1.83979380595174,10.5743447849627,14.9350769083666;]; pp2.pieces=9; pp2.order=4; pp2.dim=1; Lbz=ppval(pp2,Tpr); elseif n==4 pp4.form='pp'; pp4.breaks=[50 70 80 90 95 98 99 99.5000 99.9000 99.9900]; pp4.coefs=[3.66286868444963e-05,0,0.0453526263896390,-6.20001612140725;-0.000113102179577539,0.00219772121066978,0.0893070506030345,-4.99993409885850;0.000326883867208858,-0.00119534417665639,0.0993308209431684,-4.00019365133871;-0.000727365934956800,0.00861117183960936,0.173489097572698,-2.79953599236381;0.0168400327937770,-0.00229931718474264,0.205048370847032,-1.80773195037969;0.604392422407672,0.149260977959251,0.645933353170556,-0.758599807069293;-0.397553159541230,1.96243824518227,2.75763257631207,0.640986946468185;-0.762714404274230,1.36610850587042,4.42190595183842,2.46071865097713;-1.66981933607921,0.450851220741332,5.14868984248313,4.39924467077825;]; pp4.pieces=9; pp4.order=4; pp4.dim=1; Lbz=ppval(pp4,Tpr); end end Lzam.m function [ Lz ] = Lzam(x, n, sigma) if n==1 if sigma==3 a1=8.876e15; b1=142.9; c1=7.333; a2=0; b2=1; c2=1; a3=123.4; b3=164.9; c3=46.83; elseif sigma==4 a1=7.495e15; b1=141.8; c1=7.16; a2=0; b2=1; c2=1; a3=115; b3=166.9; c3=49.85; elseif sigma==5 a1=1.303e16; b1=138.8; c1=6.584; a2=234.6; b2=184.3; c2=54.24; a3=0; b3=1; c3=1; elseif sigma==6 a1=8.011e14; b1=117.5; c1=3.09; a2=5.627; b2=100.5; c2=2.282; a3=39.18; b3=137.5; c3=45.42; elseif sigma==7 a1=3.08e15; b1=130.4; c1=5.274; a2=35.63; b2=59.72; c2=25.03; a3=74.15; b3=123.8; c3=21.46; end elseif n==2 if sigma==3 a1=3.634; b1=100.1; c1=0.2605; a2=1.424e15; b2=181.3; c2=14.05; a3=7302; b3=231.9; c3=50.68; elseif sigma==4 a1=234; b1=100.8; c1=0.4421; a2=6.382e16; b2=179.1; c2=12.98; a3=1615; b3=219; c3=52.85; elseif sigma==5 a1=4.173e15; b1=130.9; c1=5.308; a2=69.67; b2=140.1; c2=30.56; a3=0; b3=1; c3=1; elseif sigma==6 a1=5.952e14; b1=113.5; c1=2.384; a2=4.38; b2=100.4; c2=2.216; a3=15.26; b3=112.7; c3=24.18; elseif sigma==7 a1=2.977; b1=99.89; c1=0.0954; a2=1.88e15; b2=182.8; c2=14.36; a3=12400; b3=568; c3=126.3; end elseif n==4 if sigma==3 a1=1.386; b1=99.91; c1=0.1078; a2=-24.82; b2=103.8; c2=5.008; a3=67530; b3=143.8; c3=15.46; elseif sigma==4 a1=2271; b1=102.4; c1=0.9524; a2=179.7; b2=114.6; c2=13.67; a3=-86.2; b3=108.2; c3=10.75; elseif sigma==5 a1=9.461e14; b1=124.6; c1=4.296; a2=0.4379; b2=91.79; c2=3.112; a3=1429; b3=189.1; c3=40.17; elseif sigma==6 a1=6.402e15; b1=133.6; c1=5.704; a2=0; b2=100.5; c2=2.282; a3=122.7; b3=160.2; c3=39.06; elseif sigma==7 a1=6.102e15; b1=129.6; c1=5.049; a2=0; b2=59.72; c2=25.03; a3=129.3; b3=161.5; c3=40.62; end end Lz=a1*exp(-((x-b1)/c1)^2)+a2*exp(-((x-b2)/c2)^2)+a3*exp(-((x-b3)/c3)^2); end kramp.m function [Kr] = kramp(x) K=2/sqrt(2*pi)*int(sym('exp(-t^2/2)'),'t',0,x); Kr=double(vpa(K,5)); end poly_approx.m clc clear x = [100 150 200 250 300 350 400]; y = [15 14.5 14 13.2 12.2 11 9.6]; p = polyfit(x, y, 6) f = polyval(p, x); f = polyval(p, x); plot(x, y, 'ob', x, f, '-g') cftool LK_data_AM.m function varargout = LK_data_AM(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, … 'gui_Singleton', gui_Singleton, … 'gui_OpeningFcn', @LK_data_AM_OpeningFcn, … 'gui_OutputFcn', @LK_data_AM_OutputFcn, … 'gui_LayoutFcn', [] , … 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function LK_data_AM_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; global Pvh1vt global Lm1z global Pvh1med global L2 global h02 global Zap2 global h0t1 global Lz global h01 global L1 global Zap1 global Rpred global Lbz global Lmz global Pvh2medvt global Tm global m global L0r global L2med global Pvh2vt global h0t2 set(handles.edit1, 'String', L0r); set(handles.edit2, 'String', Lbz); set(handles.edit3, 'String', Lmz); set(handles.edit4, 'String', Lz); set(handles.edit5, 'String', Lm1z); set(handles.edit6, 'String', L1); set(handles.edit7, 'String', Pvh1med); set(handles.edit8, 'String', Pvh1vt); set(handles.edit9, 'String', h01); set(handles.edit11, 'String', Zap1); set(handles.edit12, 'String', Rpred); set(handles.edit14, 'String', L0r); set(handles.edit16, 'String', Lbz); set(handles.edit17, 'String', Lmz); set(handles.edit18, 'String', Lz); set(handles.edit19, 'String', L2med); set(handles.edit20, 'String', L2); set(handles.edit21, 'String', Pvh2medvt); set(handles.edit22, 'String', Pvh2vt); set(handles.edit23, 'String', h02); set(handles.edit25, 'String', Zap2); if Tm~=5 disp('Аналоговая обработка сигнала'); if Tm==1 disp('Амплитудная манипуляция'); x=sqrt(h01/2); Kr1=kramp(x); Pk1=(1-Kr1)/2; x=sqrt(h02/2); Kr2=kramp(x); Pk2=(1-Kr2)/2; set(handles.edit13, 'String', Pk1); set(handles.edit26, 'String', Pk2); disp(['Poh1=', num2str(Pk1),' когерентный прием']); disp(['Poh2=', num2str(Pk2),' когерентный прием']); Pn1=exp(-h01/4)/2; Pn2=exp(-h02/4)/2; set(handles.edit15, 'String', Pn1); set(handles.edit27, 'String', Pn2); disp(['Poh1=', num2str(Pn1),' некогерентный прием']); disp(['Poh2=', num2str(Pn2),' некогерентный прием']); elseif Tm==2 disp('Частотная манипуляция'); x=sqrt(h01); Kr1=kramp(x); Pk1=(1-Kr1)/2; x=sqrt(h02); Kr2=kramp(x); Pk2=(1-Kr2)/2; disp(['Poh1=', num2str(Pk1),' когерентный прием']); disp(['Poh2=', num2str(Pk2),' когерентный прием']); Pn1=exp(-h01/2)/2; Pn2=exp(-h02/2)/2; disp(['Poh1=', num2str(Pn1),' некогерентный прием']); disp(['Poh2=', num2str(Pn2),' некогерентный прием']); elseif Tm==3 disp('Фазовая манипуляция'); x=sqrt(2*h01); Kr1=kramp(x); Pk1=(1-Kr1)/2; x=sqrt(2*h02); Kr2=kramp(x); Pk2=(1-Kr2)/2; disp(['Poh1=', num2str(Pk1),' когерентный прием']); disp(['Poh2=', num2str(Pk2),' когерентный прием']); elseif Tm==4 disp('Относительная фазовая манипуляция'); x=sqrt(2*h01); Kr1=kramp(x); Pk1=(1-Kr1)^2/2; x=sqrt(2*h02); Kr2=kramp(x); Pk2=(1-Kr2)^2/2; disp(['Poh1=', num2str(Pk1),' сравнение полярностей']); disp(['Poh2=', num2str(Pk2),' сравнение полярностей']); Pn1=exp(-h01)/2; Pn2=exp(-h02)/2; disp(['Poh1=', num2str(Pn1),' сравнение фаз']); disp(['Poh2=', num2str(Pn2),' сравнение фаз']); end end disp('Цифровая обработка сигнала'); h01c=h01*log2(m); h02c=h02*log2(m); if Tm==1 disp('Амплитудная модуляция'); disp('Однополярные прямоугольные импульсы'); x=sqrt(h01c/(m-1)^2); Kr1=kramp(x); Pk1=(m-1)/m*(1-Kr1); x=sqrt(h02c/(m-1)^2); Kr2=kramp(x);