【通信】基于短波通信系統(tǒng)仿真matlab源碼含 GUI
一、簡介
短波按照國際無線電咨詢委員會(CCIR,現(xiàn)在的ITU-R)的劃分是指波長在l00ml0m,頻率為3MHz30MHz的電磁波。利用短波進行的無線電通信稱為短波通信,又稱高頻(HF)通信。實際上,為了充分利用短波近距離通信的優(yōu)點,短波通信實際使用的頻率范圍為1.5MHz~30MHz。
自從1921年發(fā)生在意大利羅馬的一次意外事故,短波被發(fā)現(xiàn)可實現(xiàn)遠距離通信以來,短波通信迅速發(fā)展,成為了世界各國中、遠程通信的主要手段,被廣泛地用于政府、軍事、外交、氣象、商業(yè)等部門,用以傳送電報、電話、傳真、低速數(shù)據(jù)和圖像、語音廣播等信息。在衛(wèi)星通信出現(xiàn)以前,短波在國際通信、防汛救災(zāi)、海難救援以及軍事通信等方面發(fā)揮了獨特的重要作用。
短波通信可以利用地波傳播,但主要是利用天波傳播。
地波傳播的衰耗隨工作頻率的升高而遞增,在同樣的地面條件下,頻率越高,衰耗越大。利用地波只適用于近距離通信,其工作頻率一般選在5MHz以下。地波傳播受天氣影響小,比較穩(wěn)定,信道參數(shù)基本不隨時間變化,故地波傳播信道可視為恒參信道。
天波是無線電波經(jīng)電離層反射回地面的部分,傾斜投射的電磁波經(jīng)電離層反射后,可以傳到幾千千米外的地面。天波的傳播損耗比地波小得多,經(jīng)地面與電離層之間多次反射(多跳傳播)之后,可以達到極遠的地方,因此,利用天波可以進行環(huán)球通信。天波傳播因受電離層變化和多徑傳播的嚴(yán)重影響極不穩(wěn)定,其信道參數(shù)隨時間而急劇變化,因此稱為變參信道。天波不僅可以用于遠距離通信,而且還可以用于近距離通信。
在地形復(fù)雜,短波地波或視距微波受阻擋而無法到達的地區(qū),利用高仰角投射的天波可以實現(xiàn)通信。與衛(wèi)星通信、地面微波、同軸電纜、光纜等通信手段相比,短波通信也有著許多顯著的優(yōu)點:
1)短波通信不需要建立中繼站即可實現(xiàn)遠距離通信,因而建設(shè)和維護費用低,建設(shè)周期短;
2)設(shè)備簡單,可以根據(jù)使用要求固定設(shè)置,進行定點固定通信。也可以背負或裝入車輛、艦船、飛行器中進行移動通信;
3)電路調(diào)度容易,臨時組網(wǎng)方便、迅速,具有很大的使用靈活性;
4)對自然災(zāi)害或戰(zhàn)爭的抗毀能力強。通信設(shè)備體積小,容易隱蔽,便于改變工作頻率以躲避敵人干擾和竊聽,破壞后容易恢復(fù)。
這些是短波通信被長期保留,至今仍然被廣泛使用的主要原因。短波通信也存在著一些明顯的缺點:
1)可供使用的頻段窄,通信容量小。按照國際規(guī)定,每個短波電臺占用3.7kHz的頻率寬度,而整個短波頻段可利用的頻率范圍只有28.5MHz。為了避免相互間的干擾,全球只能容納7700多個可通信道,通信空間十分擁擠。并且3kHz通信頻帶寬度,在很大程度上限制了通信的容量和數(shù)據(jù)傳輸?shù)乃俾省?/p>
2)短波的天波信道是變參信道,信號傳輸穩(wěn)定性差。短波無線電通信主要是依賴電離層進行遠距離信號傳輸?shù)模婋x層作為信號反射媒質(zhì)的弱點是參量的可變性很大。它的特點是路徑損耗、延時散步、噪聲和干擾,都隨晝夜、頻率、地點而不斷變化著。
一方面電離層的變化使信號產(chǎn)生衰落,衰落的幅度和頻次不斷變化;
另一方面天波信道存在著嚴(yán)重的多徑效應(yīng),造成頻率選擇性衰落和多徑延時。選擇性衰落使信號失真,多徑延時使接收信號在時間上擴散,成為短波鏈路數(shù)據(jù)傳輸?shù)闹饕拗啤?/p>
3)大氣和工業(yè)無線電噪聲干擾嚴(yán)重。隨著工業(yè)電器化的發(fā)展,短波頻段工業(yè)電器輻射的無線電噪聲干擾平均強度很高,加上大氣無線電噪聲和無線電臺間干擾,在過去,幾瓦、十幾瓦發(fā)射功率就能實現(xiàn)的遠距離短波無線電通信,而在今天,10倍、幾十倍于這樣的功率也不一定能夠保證可靠的通信。大氣和工業(yè)無線電噪聲主要集中在無線電頻譜的低端,隨著頻率的升高,強度逐漸降低。雖然,在短波頻段這類噪聲干擾比中長波段低,但強度仍很高,影響著短波通信的可靠性,尤其是脈沖型突發(fā)噪聲,經(jīng)常會使數(shù)據(jù)傳輸出現(xiàn)突發(fā)錯誤,嚴(yán)重影響通信質(zhì)量。
這些問題的存在,不僅限制了短波通信的發(fā)展,而且也不能很好地適應(yīng)人們?nèi)找嬖鲩L的對數(shù)據(jù)通信,特別是對高速數(shù)據(jù)通信業(yè)務(wù)的需求。當(dāng)20世紀(jì)60年代衛(wèi)星通信興起時,由于衛(wèi)星通信與短波通信相比具有信道穩(wěn)定、可靠性高、通信質(zhì)量好、通信容量大等優(yōu)點,短波通信受到嚴(yán)重挑戰(zhàn)。許多原屬短波通信的一些重要業(yè)務(wù),被衛(wèi)星通信所取代;對短波通信的投入急劇減少,短波通信的地位大為降低。至70年代后期,有人甚至懷疑短波通信存在的價值。
然而,實踐證明衛(wèi)星通信的初建費用高,靈活性有限。曾被設(shè)想為可能取代短波通信的衛(wèi)星通信,并不能滿足所有情況下的用戶需要。事實上也不是所有用戶都需要寬帶線路。
此外,在戰(zhàn)爭時期,衛(wèi)星通信容易遭受敵方攻擊,信道不易抵御敵方的電磁干擾。與此相比,短波通信不僅成本低廉,容易實現(xiàn),更重要的是具有天然的不易被“摧毀”的“中繼系統(tǒng)”–電離層。衛(wèi)星中繼系統(tǒng)可能發(fā)生故障或被摧毀,而電離層這個中繼系統(tǒng),除非高空原子彈爆炸才可能使它中斷,何況高空原子彈爆炸也僅僅是有限的電離層區(qū)域內(nèi)短時間影響電離密度。
1980年2月,美國國防部核武器局(DefenseNuclearAgency)在一份報告中提出:“一個國家,在遭受原子襲擊后,恢復(fù)通信聯(lián)絡(luò)最有希望的解決辦法是采用價格不高,能夠自動尋找信道的高頻通信系統(tǒng)”。
事實上,從20世紀(jì)70年代末,80年代初開始,短波通信又重新受到重視。許多國家加速了對短波通信技術(shù)的研究與開發(fā),陸續(xù)推出了一些性能優(yōu)良的新型設(shè)備和系統(tǒng)。美軍在1979年修改的綜合戰(zhàn)術(shù)通信計劃中,又突出了短波通信的地位,把它列為第一線指揮控制通信手段之一;80年代初開始,美軍實施了遍及三軍的一系列短波通信改進計劃;在海灣戰(zhàn)爭中,美、法等國軍隊大量運用短波通信,取得了突出的效果。近年來,其他一些國家的軍隊,也把短波通信列為重要的通信手段之一。
此外,在民用通信的某些領(lǐng)域,短波通信的應(yīng)用也有發(fā)展的趨勢。特別是近十幾年來,由于多種新技術(shù)的應(yīng)用,短波通信技術(shù)及裝備取得了很大進展,短波通信原有的缺點,已有不少得到了克服,短波通信鏈路的質(zhì)量大大提高,無論是電話傳輸還是數(shù)據(jù)傳輸?shù)馁|(zhì)量可以與衛(wèi)星通信相比,短波通信又重新煥發(fā)了青春。
function varargout = SW(varargin)
% SW M-file for SW.fig
% ? ? ?SW, by itself, creates a new SW or raises the existing
% ? ? ?singleton*.
%
% ? ? ?H = SW returns the handle to a new SW or the handle to
% ? ? ?the existing singleton*.
%
% ? ? ?SW('CALLBACK',hObject,eventData,handles,...) calls the local
% ? ? ?function named CALLBACK in SW.M with the given input arguments.
%
% ? ? ?SW('Property','Value',...) creates a new SW or raises the
% ? ? ?existing singleton*. ?Starting from the left, property value pairs are
% ? ? ?applied to the GUI before SW_OpeningFcn gets called. ?An
% ? ? ?unrecognized property name or invalid value makes property application
% ? ? ?stop. ?All inputs are passed to SW_OpeningFcn via varargin.
%
% ? ? ?*See GUI Options on GUIDE's Tools menu. ?Choose "GUI allows only one
% ? ? ?instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help SW
% Last Modified by GUIDE v2.5 26-Jul-2015 17:13:01
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', ? ? ? mfilename, ...
? ? ? ? ? ? ? ? ? 'gui_Singleton', ?gui_Singleton, ...
? ? ? ? ? ? ? ? ? 'gui_OpeningFcn', @SW_OpeningFcn, ...
? ? ? ? ? ? ? ? ? 'gui_OutputFcn', ?@SW_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
% End initialization code - DO NOT EDIT
% --- Executes just before SW is made visible.
function SW_OpeningFcn(hObject, eventdata, handles, varargin)
set(handles.run,'enable','off');
set(handles.sendsignal,'enable','off');
set(handles.receivesignal,'enable','off');
set(handles.axes1,'visible','off');
set(handles.axes2,'visible','off');
% This function has no output args, see OutputFcn.
% hObject ? ?handle to figure
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?structure with handles and user data (see GUIDATA)
% varargin ? command line arguments to SW (see VARARGIN)
% Choose default command line output for SW
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes SW wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = SW_OutputFcn(hObject, eventdata, handles)
% varargout ?cell array for returning output args (see VARARGOUT);
% hObject ? ?handle to figure
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in selectfile.
function selectfile_Callback(hObject, eventdata, handles)
%FilterSpec={'*.wav','*.wma'};
FilterSpec=('*.wav');
[fname,pname]=uigetfile(FilterSpec,'選擇音頻文件');
sourceFile=strcat(pname,fname);
set(handles.soucepath,'String',sourceFile);
[source,samplefs] = wavread(fname);
[m2,d2]=wavfinfo(fname);
%title('原始語音信號時域波形');?
%xlabel('時間軸');?
%ylabel('幅值?A');
handles.source = source;
handles.samplefs = samplefs;
guidata(hObject,handles);
set(handles.run,'enable','on','Backgroundcolor',[0 1 0]);
set(handles.sendsignal,'enable','on','Backgroundcolor',[0 1 0 ]);
set(handles.receivesignal,'enable','off');
set(handles.axes1,'visible','Off');
set(handles.axes2,'visible','Off');
% hObject ? ?handle to selectfile (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?structure with handles and user data (see GUIDATA)
function soucepath_Callback(hObject, eventdata, handles)
%cd (get(handles.soucepath,'string'));
%load_listbox(pwd,handles);
% hObject ? ?handle to soucepath (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of soucepath as text
% ? ? ? ?str2double(get(hObject,'String')) returns contents of soucepath as a double
% --- Executes during object creation, after setting all properties.
function soucepath_CreateFcn(hObject, eventdata, handles)
% hObject ? ?handle to soucepath (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% ? ? ? See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
? ?set(hObject,'BackgroundColor','white');
end
% --- Executes on selection change in modulationtype.
function modulationtype_Callback(hObject, eventdata, handles)
switch get(handles.modulationtype,'value')
? ?case 1
? ? ? ?set(handles.modparm_txt,'String','調(diào)制指數(shù):','Visible','on');
? ? ? ?set(handles.modparm,'Visible','on','String','0.2');
? ? ? ? set(handles.text13,'Visible','on');
? ? ? ?set(handles.demodmethod,'Style','popupmenu','string',{'相干解調(diào) ','包絡(luò)檢波'});
? ?case 2
? ? ? ?set(handles.modparm_txt,'Visible','off');
? ? ? ?set(handles.modparm,'Visible','off');
? ? ? ? set(handles.text13,'Visible','off');
? ? ? ?set(handles.demodmethod,'Style','edit','string','相干解調(diào)');
? ?case 3
? ? ? ?set(handles.modparm_txt,'String','最大頻偏:','Visible','on'); ? ?
? ? ? ? set(handles.text13,'Visible','off');
? ? ? ?set(handles.modparm,'Visible','on','String','80000');
? ? ? ?set(handles.demodmethod,'Style','edit','string','相干解調(diào)');
end ? ?
% hObject ? ?handle to modulationtype (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns modulationtype contents as cell array
% ? ? ? ?contents{get(hObject,'Value')} returns selected item from modulationtype
% --- Executes during object creation, after setting all properties.
function modulationtype_CreateFcn(hObject, eventdata, handles)
% hObject ? ?handle to modulationtype (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?empty - handles not created until after all CreateFcns called
% Hint: popupmenu controls usually have a white background on Windows.
% ? ? ? See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
? ?set(hObject,'BackgroundColor','white');
end
function modparm_Callback(hObject, eventdata, handles)
modparm = str2double(get(handles.modparm,'String'));
if modparm>1
? ?errordlg('調(diào)制指數(shù)不能超過1','錯誤');
? ?return
end
% hObject ? ?handle to modparm (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of modparm as text
% ? ? ? ?str2double(get(hObject,'String')) returns contents of modparm as a double
% --- Executes during object creation, after setting all properties.
function modparm_CreateFcn(hObject, eventdata, handles)
% hObject ? ?handle to modparm (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% ? ? ? See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
? ?set(hObject,'BackgroundColor','white');
end
function minfreq_Callback(hObject, eventdata, handles)
% hObject ? ?handle to minfreq (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of minfreq as text
% ? ? ? ?str2double(get(hObject,'String')) returns contents of minfreq as a double
% --- Executes during object creation, after setting all properties.
function minfreq_CreateFcn(hObject, eventdata, handles)
% hObject ? ?handle to minfreq (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% ? ? ? See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
? ?set(hObject,'BackgroundColor','white');
end
function maxfreq_Callback(hObject, eventdata, handles)
% hObject ? ?handle to maxfreq (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of maxfreq as text
% ? ? ? ?str2double(get(hObject,'String')) returns contents of maxfreq as a double
% --- Executes during object creation, after setting all properties.
function maxfreq_CreateFcn(hObject, eventdata, handles)
% hObject ? ?handle to maxfreq (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% ? ? ? See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
? ?set(hObject,'BackgroundColor','white');
end
function upsamplefactor_Callback(hObject, eventdata, handles)
% hObject ? ?handle to upsamplefactor (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of upsamplefactor as text
% ? ? ? ?str2double(get(hObject,'String')) returns contents of upsamplefactor as a double
% --- Executes during object creation, after setting all properties.
function upsamplefactor_CreateFcn(hObject, eventdata, handles)
% hObject ? ?handle to upsamplefactor (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% ? ? ? See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
? ?set(hObject,'BackgroundColor','white');
end
function fc_Callback(hObject, eventdata, handles)
fc = str2double(get(handles.fc,'String'));
if fc<1.6||fc>30
? ?errordlg('請將載波頻率設(shè)置在1.6MHz至30MHz之間','錯誤');
? ?return
end
% hObject ? ?handle to fc (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of fc as text
% ? ? ? ?str2double(get(hObject,'String')) returns contents of fc as a double
% --- Executes during object creation, after setting all properties.
function fc_CreateFcn(hObject, eventdata, handles)
% hObject ? ?handle to fc (see GCBO)
% eventdata ?reserved - to be defined in a future version of MATLAB
% handles ? ?empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% ? ? ? See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
? ?set(hObject,'BackgroundColor','white');
end
二、源代碼
三、運行結(jié)果

?

?