【數字信號調製】基於matlab GUI通訊(AM+FM+DSB+SSB)系統【Matlab1212

1、簡介

1 緒論
調製:把消息信號寄託到載波的某個參數上,造成已調信號。
解調:調製的逆過程,從已調信號中恢復消息信號。markdown

2 調製的目的
無線通訊中,匹配信道特性,提升發射信號的頻率,減少天線尺寸;頻譜搬移,一條信道中同時傳輸多路信號,多路複用,提升信道利用率;擴展信號帶寬,提升系統抗干擾能力;實現帶寬與信噪比的互換(有效性和可靠性);利用電話線將PC機接入Internet,須要翻譯模/數信號。app

3 調製的分類
3.1 涉及的信號
消息信號,又稱調製信號、基帶信號;
載波:運載工具,經常使用的是正弦波、脈衝序列;
已調信號:受調載波,載有消息信號的信息,具備多種形式。
3.2 能夠從不一樣角度分類
按調製信號的類型:模擬調製/數字調製
按已調信號的頻譜結構:線性調製/非線性調製
按正弦載波的受調參量:幅度調製/頻率調製/相位調製
按載波信號的類型:連續波調製/脈衝調製ide

4 幅度調製
4.1 通常模型
(1)理論基礎:傅里葉變換
(2)通常模型
幅度調製:消息信號控制正弦載波的幅度。
方法:用消息信號經過相乘器乘上載波信號,再經過帶通濾波器(時域卷積濾波器特性)。
舉例:AM、DSB、SSB、VSB。工具

4.2 常規雙邊帶調幅AM
t 域:已調信號的波形,調製/解調方法
f 域:已調信號的頻譜,帶寬B
AM信號的包絡正比於消息信號的規律,所以能夠採用簡單的包絡檢波方法(非相干解調)解調;
頻譜由載波、上邊帶USB、下邊帶LSB組成。帶寬BAM=2fH;
幅度調製又稱爲線性調製;
應用:中短波調幅廣播。
缺點:功率利用率低,最多達到50%性能

4.3 抑制載波雙邊帶DSB
頻譜由上邊帶USB、下邊帶LSB組成,沒有了載波份量。帶寬BDSB=BAM=2fH;
調製效率可達100%。
採用相干解調:
方法:用消息信號經過想乘器乘上相干載波信號,再經過低通濾波器(時域卷積濾波器特性)。
要求:載波同步(相干載波和載波信號同頻同相)ui

4.4 單邊帶調製SSB
只傳輸一個邊帶,頻帶利用率高。帶寬BSSB=BAM/2=fH;在頻譜擁擠的通訊場合,如短波通訊、多路載波電話系統。低功耗特性。使用於移動通訊系統。
缺點:設備複雜,存在技術難點,須要相干解調。this

4.5 殘留邊帶調製VSB
殘留邊帶濾波器特性:在載頻處具備互補對稱特性;介於單邊帶與雙邊帶之間的方案。翻譯

5 角度調製
正弦載波有三個參量:幅度、頻率、相位。均可以攜帶消息信號。
其中,頻率(FM)和相位(PM)都稱爲角度調製。
頻率調製(FM)
幅度恆定,對瞬時相位對t求微分,獲得瞬時角頻率。
調頻的頻譜由載頻份量wc兩側的無數多對邊頻wc±nwm組成,其幅度取決於mf;
理論上,調頻的帶寬無窮大;
實際中,用卡森公式計算FM帶寬:BFM=2(mf+1)fm。fm爲調製信號的最高頻率
FM調製爲非線性調製。FM解調也稱鑑頻 ,採用微分電路+包絡檢波實現。
FM的特色和應用
特色:幅度不變,包絡恆定。
優點:抗噪能力強;
代價:佔用較大信道帶寬,頻譜利用率低;
應用:高質量或信道噪聲大的場合。如衛星通訊、移動通訊、微波通訊等。3d

6 抗噪聲性能
性能指標:輸出信噪比、制度增益
輸入信噪比:Ni=n0B。n0是噪聲的單邊功率譜密度,B=2fH是帶寬,是基帶帶寬的2倍。code

AM DSB SSB VSB(幅度調製)
相干解調器:線性解調,信號和噪聲能夠分開處理。
雙邊帶和單邊帶調製的抗噪聲性能相同。
小信噪比時,信號被幹擾爲噪聲,產生門限效應。緣由是包絡檢波的非線性解調做用。
信噪比固定。
FM(角度調製)
FM系統能夠經過增長傳輸帶寬來改善抗噪聲性能(信噪比)。

總結
頻譜利用率 SSB>VSB>DSB/AM>FM
抗噪聲性能:FM>DSB/SSB>VSB>AM
設備複雜度:AM最簡,DSB/FM次之,SSB最複雜

2、部分源代碼

function varargout = signal_generator(varargin)
% SIGNAL_GENERATOR MATLAB code for signal_generator.fig
%      SIGNAL_GENERATOR, by itself, creates a new SIGNAL_GENERATOR or raises the existing
%      singleton*.
%
%      H = SIGNAL_GENERATOR returns the handle to a new SIGNAL_GENERATOR or the handle to
%      the existing singleton*.
%
%      SIGNAL_GENERATOR('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in SIGNAL_GENERATOR.M with the given input arguments.
%
%      SIGNAL_GENERATOR('Property','Value',...) creates a new SIGNAL_GENERATOR or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before signal_generator_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to signal_generator_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 signal_generator

% Last Modified by GUIDE v2.5 12-Jul-2021 20:04:30

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @signal_generator_OpeningFcn, ...
                   'gui_OutputFcn',  @signal_generator_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 signal_generator is made visible.
function signal_generator_OpeningFcn(hObject, eventdata, handles, varargin)
% 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 signal_generator (see VARARGIN)

% Choose default command line output for signal_generator
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes signal_generator wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = signal_generator_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 pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)

AM

% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton5 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

DSB

% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton6 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

SSB

% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton7 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

FM

% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton8 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

close(handles.figure1);
% --- Executes just before AM is made visible.
function AM_OpeningFcn(hObject, eventdata, handles, varargin)
% 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 AM (see VARARGIN)

% Choose default command line output for AM
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes AM wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = AM_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 during object creation, after setting all properties.
function axes3_CreateFcn(hObject, eventdata, handles)
% hObject    handle to axes3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: place code in OpeningFcn to populate axes3

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% --- Executes during object creation, after setting all properties.
function frame1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to frame1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% --- Executes during object creation, after setting all properties.
function text2_CreateFcn(hObject, eventdata, handles)
% hObject    handle to text2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% --- Executes when entered data in editable cell(s) in uitable2.
function uitable2_CellEditCallback(hObject, eventdata, handles)
% hObject    handle to uitable2 (see GCBO)
% eventdata  structure with the following fields (see MATLAB.UI.CONTROL.TABLE)
%   Indices: row and column indices of the cell(s) edited
%   PreviousData: previous data for the cell(s) edited
%   EditData: string(s) entered by the user
%   NewData: EditData or its converted form set on the Data property. Empty if Data was not changed
%   Error: error string when failed to convert EditData to appropriate value for Data
% handles    structure with handles and user data (see GUIDATA)

% --- Executes on selection change in listbox3.
function listbox3_Callback(hObject, eventdata, handles)
% hObject    handle to listbox3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns listbox3 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from listbox3

% --- Executes during object creation, after setting all properties.
function listbox3_CreateFcn(hObject, eventdata, handles)
% hObject    handle to listbox3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: listbox 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 edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (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 edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double

% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit1 (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 edit2_Callback(hObject, eventdata, handles)
% hObject    handle to edit2 (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 edit2 as text
%        str2double(get(hObject,'String')) returns contents of edit2 as a double

% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit2 (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 edit3_Callback(hObject, eventdata, handles)
% hObject    handle to edit3 (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 edit3 as text
%        str2double(get(hObject,'String')) returns contents of edit3 as a double

% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit3 (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 button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

f=str2num(get(handles.edit2,'String')); %f=1,1hz基帶信號
A=str2num(get(handles.edit1,'String'));  % A=0.3
fc=str2num(get(handles.edit3,'String')); %fc=64  hz載波
fs=str2num(get(handles.edit4,'String')); %fs=1024;    
t=0:1/fs:2-0.5/fs;    %採樣時間爲0到2秒
x=(1+A*cos(2*pi*f*t)).*cos(2*pi*fc*t);  %調幅表達式
plot(handles.axes1,x);

3、運行結果

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

4、matlab版本及參考文獻

1 matlab版本
2014a

2 參考文獻[1] 沈再陽.精通MATLAB信號處理[M].清華大學出版社,2015.[2]高寶建,彭進業,王琳,潘建壽.信號與系統——使用MATLAB分析與實現[M].清華大學出版社,2020.[3]王文光,魏少明,任欣.信號處理與系統分析的MATLAB實現[M].電子工業出版社,2018.

相關文章
相關標籤/搜索