✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
AM(Amplitude Modulation)调制是一种常见的模拟调制技术,通过改变载波信号的幅度来传输基带信号。在AM调制中,基带信号被乘以一个高频载波信号,产生一个带有两个边带的调制信号。这两个边带位于载波频率的上下方。
FM(Frequency Modulation)调制是一种模拟调制技术,通过改变载波信号的频率来传输基带信号。在FM调制中,基带信号被用于调制载波信号的频率,使得载波频率在基带信号变化时发生相应的变化。这种调制方式产生一个带宽较宽的调制信号,其中包含了无限多个边带。
DSB(Double Sideband)调制是一种模拟调制技术,它将基带信号的全部频谱复制到两个边带中,同时去除了载波信号。DSB调制产生的信号带宽较大,效率较低,因为它需要传输整个基带信号的频谱。
SSB(Single Sideband)调制是一种模拟调制技术,它只传输基带信号的一个边带,而另一个边带和载波信号被抑制或抑制得非常弱。SSB调制可以提高信号的带宽利用率,并减少功率消耗。
PM(Phase Modulation)调制是一种模拟调制技术,它通过改变载波信号的相位来传输基带信号。在PM调制中,基带信号被用于调制载波信号的相位,使得载波相位在基带信号变化时发生相应的变化。PM调制产生的调制信号带宽较宽,但相对于FM调制,它的抗干扰性更好。
这些调制方式在无线通信、广播、电视等领域中被广泛应用,每种调制方式具有不同的特点和适用场景。
⛄ 部分代码
function varargout = dsb(varargin) % DSB MATLAB code for dsb.fig % DSB, by itself, creates a new DSB or raises the existing % singleton*. % % H = DSB returns the handle to a new DSB or the handle to % the existing singleton*. % % DSB('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in DSB.M with the given input arguments. % % DSB('Property','Value',...) creates a new DSB or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before dsb_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to dsb_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 dsb % Last Modified by GUIDE v2.5 26-Feb-2020 23:48:18 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @dsb_OpeningFcn, ... 'gui_OutputFcn', @dsb_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 dsb is made visible. function dsb_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 dsb (see VARARGIN) % Choose default command line output for dsb handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes dsb wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = dsb_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; 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 function edit4_Callback(hObject, eventdata, handles) % hObject handle to edit4 (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 edit4 as text % str2double(get(hObject,'String')) returns contents of edit4 as a double % --- Executes during object creation, after setting all properties. function edit4_CreateFcn(hObject, eventdata, handles) % hObject handle to edit4 (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 edit5_Callback(hObject, eventdata, handles) % hObject handle to edit5 (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 edit5 as text % str2double(get(hObject,'String')) returns contents of edit5 as a double % --- Executes during object creation, after setting all properties. function edit5_CreateFcn(hObject, eventdata, handles) % hObject handle to edit5 (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 edit6_Callback(hObject, eventdata, handles) % hObject handle to edit6 (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 edit6 as text % str2double(get(hObject,'String')) returns contents of edit6 as a double % --- Executes during object creation, after setting all properties. function edit6_CreateFcn(hObject, eventdata, handles) % hObject handle to edit6 (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 edit7_Callback(hObject, eventdata, handles) % hObject handle to edit7 (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 edit7 as text % str2double(get(hObject,'String')) returns contents of edit7 as a double % --- Executes during object creation, after setting all properties. function edit7_CreateFcn(hObject, eventdata, handles) % hObject handle to edit7 (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 edit8_Callback(hObject, eventdata, handles) % hObject handle to edit8 (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 edit8 as text % str2double(get(hObject,'String')) returns contents of edit8 as a double % --- Executes during object creation, after setting all properties. function edit8_CreateFcn(hObject, eventdata, handles) % hObject handle to edit8 (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 edit9_Callback(hObject, eventdata, handles) % hObject handle to edit9 (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 edit9 as text % str2double(get(hObject,'String')) returns contents of edit9 as a double % --- Executes during object creation, after setting all properties. function edit9_CreateFcn(hObject, eventdata, handles) % hObject handle to edit9 (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 edit10_Callback(hObject, eventdata, handles) % hObject handle to edit10 (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 edit10 as text % str2double(get(hObject,'String')) returns contents of edit10 as a double % --- Executes during object creation, after setting all properties. function edit10_CreateFcn(hObject, eventdata, handles) % hObject handle to edit10 (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 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) global stype domain ; f0=str2double(get(handles.edit1,'string')); fc=str2double(get(handles.edit2,'string')); fs=str2double(get(handles.edit3,'string')); t=[0:0.000001:0.004]; s = audioread('data.wav'); s = s(:,1); s = s'; pos = 4.4e4; s=s(pos:pos+length(t)-1); if stype == 0 am1=cos(2*pi*f0*t); %信息信号 else am1 = s; end t=[0:0.000001:0.004]; am=am1; %信息信号 t1=cos(2*pi*fc*t); %载波 s_am=am.*t1; %DSB %figure(1) snr=get(handles.edit4,'String');; %加噪 snr=str2num(snr); y=awgn(s_am,snr); %snr=noise; %加噪 y=awgn(s_am,snr); a=str2double(get(handles.edit5,'string')); b=str2double(get(handles.edit6,'string')); c=str2double(get(handles.edit7,'string')); d=str2double(get(handles.edit8,'string')); fsamp=1e6; %带通 fucts=[a b c d]; mags=[0 1 0]; devs=[0.05 0.01 0.05]; [n,Wn,beta,ftype]=kaiserord(fucts,mags,devs,fsamp); hh=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale'); %figure(2) % plot(f,abs(H));title('带通滤波器幅频特性'); axis([0 50000 0 1.4]); %figure(3) st_p=fftfilt(hh,y); % subplot(2,1,1);plot(t,y); title('添加噪声后信号波形'); axis([0.002 0.004 -4 4]); % subplot(2,1,2);plot(t,st_p); title('滤波后信号波形'); axis([0.002 0.004 -4 4]); sp=s_am.*t1; u=str2double(get(handles.edit9,'string')); v=str2double(get(handles.edit10,'string')); fsamp=1e6; %低通 fucts=[u v]; mags=[1 0]; devs=[0.01 0.05]; [n,Wn,beta,ftype]=kaiserord(fucts,mags,devs,fsamp); hh=fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale'); %figure(4) [H,f]=freqz(hh,1,1024,fsamp); % plot(f,abs(H));title('低通滤波器幅频特性'); axis([0 40000 0 2]); %figure(5) st_d=fftfilt(hh,sp); % subplot(2,1,1);plot(t,sp); title('乘以载波以后信号波形'); axis([0.002 0.004 0 4]); % subplot(2,1,2);plot(t,st_d); title('低通滤波以后解调出的波形'); axis([0.002 0.004 0 4]); AM1=fft(am1);T1=fft(t1);S_AM=fft(s_am);Y=fft(y);ST_P=fft(st_p);SP=fft(sp);ST_D=fft(st_d); f=(0:4000)*fs/4001-fs/2; % figure(6) % subplot(3,1,1);plot(f,fftshift(abs(AM1)));title('基带信号频谱'); axis([-40000 40000 0 2000]); % subplot(3,1,2);plot(f,fftshift(abs(T1)));title('载波信号频谱'); axis([-40000 40000 0 2000]); % subplot(3,1,3);plot(f,fftshift(abs(S_AM)));title('AM信号频谱'); axis([-40000 40000 0 2000]); % figure(7) % subplot(2,1,1);plot(f,fftshift(abs(Y)));title('噪声信号频谱'); axis([-40000 40000 0 3000]); % subplot(2,1,2);plot(f,fftshift(abs(ST_P)));title('带通滤波后频谱'); axis([-40000 40000 0 4000]); % figure(8) % subplot(2,1,1);plot(f,fftshift(abs(SP)));title('乘以载波后信号频谱'); axis([-40000 40000 0 4000]); % subplot(2,1,2);plot(f,fftshift(abs(ST_D)));title('解调得到信号频谱'); axis([-40000 40000 0 4000]); if domain == 0 plot(handles.axes5,t,am1); title('基带波形');xlabel('t/s'); plot(handles.axes6,t,t1); title('载波信号'); plot(handles.axes7,t,s_am); title('DSB信号'); plot(handles.axes8,t,st_d); else plot(handles.axes5,f,fftshift(abs(AM1)));title('基带信号频谱'); axis([-40000 40000 0 2000]); plot(handles.axes6,f,fftshift(abs(T1)));title('载波信号频谱'); axis([-40000 40000 0 2000]); plot(handles.axes7,f,fftshift(abs(S_AM)));title('DSB信号频谱'); axis([-40000 40000 0 2000]); if stype == 0 plot(handles.axes8,f,fftshift(abs(ST_D)));title('解调得到信号频谱'); axis([-40000 40000 0 2000]); else plot(handles.axes8,f,fftshift(abs(ST_D)));title('解调得到信号频谱'); axis([-40000 40000 0 3]); end 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) global stype domain dtype; set(handles.edit1,'String',2000); set(handles.edit2,'String',20000); set(handles.edit3,'String',40000); set(handles.edit4,'String',5); set(handles.edit5,'String',16000); set(handles.edit6,'String',17500); set(handles.edit7,'String',22500); set(handles.edit8,'String',24000); set(handles.edit9,'String',3000); set(handles.edit10,'String',20000); set(handles.radiobutton1,'Value',1); set(handles.radiobutton2,'Value',0); stype = 0; set(handles.radiobutton7,'Value',1); set(handles.radiobutton8,'Value',0); domain = 0; % --- Executes on button press in radiobutton1. function radiobutton1_Callback(hObject, eventdata, handles) % hObject handle to radiobutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of radiobutton1 global stype; set(handles.radiobutton1,'value',1); set(handles.radiobutton2,'value',0); stype=0; % --- Executes on button press in radiobutton2. function radiobutton2_Callback(hObject, eventdata, handles) % hObject handle to radiobutton2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of radiobutton2 global stype; set(handles.radiobutton1,'value',0); set(handles.radiobutton2,'value',1); stype=1; % --- Executes on button press in radiobutton7. function radiobutton7_Callback(hObject, eventdata, handles) % hObject handle to radiobutton7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of radiobutton7 global domain; set(handles.radiobutton7,'value',1); set(handles.radiobutton8,'value',0); domain=0; % --- Executes on button press in radiobutton8. function radiobutton8_Callback(hObject, eventdata, handles) % hObject handle to radiobutton8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of radiobutton8 global domain; set(handles.radiobutton7,'value',0); set(handles.radiobutton8,'value',1); domain=1; % --- Executes on button press in radiobutton9. function radiobutton9_Callback(hObject, eventdata, handles) % hObject handle to radiobutton9 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of radiobutton9 global dtype; set(handles.radiobutton9,'value',1); set(handles.radiobutton10,'value',0); dtype=0; % --- Executes on button press in radiobutton10. function radiobutton10_Callback(hObject, eventdata, handles) % hObject handle to radiobutton10 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: get(hObject,'Value') returns toggle state of radiobutton10 global dtype; set(handles.radiobutton9,'value',0); set(handles.radiobutton10,'value',1); dtype=1;
⛄ 运行结果
编辑编辑编辑编辑编辑编辑⛄ 参考文献
[1] 李光辉.信号调制方式自动识别的研究[D].西华大学[2023-07-15].
[2] 李红.基于Matlab的线性模拟调制技术研究[J].科技广场, 2010(7):3.DOI:10.3969/j.issn.1671-4792.2010.07.009.