通信原理与MATLAB(三):SSB的调制解调
生活随笔
收集整理的這篇文章主要介紹了
通信原理与MATLAB(三):SSB的调制解调
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
- 1.SSB的調(diào)制原理
- 2.SSB的解調(diào)原理
- 3.SSB調(diào)制解調(diào)的代碼
- 3.1 DSB經(jīng)過低通濾波器產(chǎn)生SSB
- 3.2 DSB經(jīng)過高通濾波器產(chǎn)生SSB
- 4.SSB調(diào)制解調(diào)結(jié)果圖
- 4.1 DSB經(jīng)過低通濾波產(chǎn)生SSB結(jié)果圖
- 4.2 DSB經(jīng)過高通濾波產(chǎn)生SSB結(jié)果圖
- 5.SSB的優(yōu)缺點
1.SSB的調(diào)制原理
SSB的頻譜是DSB的一半,因此相差一個低通或高通濾波器,其調(diào)制原理如下圖所示,基帶信號m(t)和高頻載波相乘實現(xiàn)DSB信號的調(diào)制,然后經(jīng)過一個濾波器生成SSB。
2.SSB的解調(diào)原理
SSB的解調(diào)原理如下圖所示,SSB信號經(jīng)過信道傳輸之后,再和載波相乘,然后經(jīng)過低通濾波后恢復出原始基帶信號。
3.SSB調(diào)制解調(diào)的代碼
3.1 DSB經(jīng)過低通濾波器產(chǎn)生SSB
SSB.m,SSB主文件
% SSB調(diào)制解調(diào)過程 %% 基本參數(shù) clear all; % 清除變量 close all; % 關(guān)閉所有窗口圖像 fm = 100; % 基帶信號頻率 T = 2; % 信號時長 fs = 20000; % 采樣頻率 奈奎斯特采樣定理為最大頻率的兩倍,這里取20倍為了繪制更多的細節(jié),讓時域信號更平滑 dt=1/fs; % 時間采樣間隔,采樣頻率的倒數(shù) N=T/dt; % 采樣點個數(shù),總時長除以采樣間隔 t=[0:N-1]*dt; % 采樣點的時間序列,作為橫坐標%% ******************調(diào)制信號時域波形****************** Am=1; % 基帶信號幅度 mt=Am*cos(2*pi*fm*t); % 基帶信號 figure(1); % 繪制第一幅圖 subplot(221); % 窗口分割,將一幅圖分割成2*2的 plot(t,mt,'Linewidth',2); % 時間t為橫坐標,基帶信號mt為縱坐標繪圖,線寬為2 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 title('基帶信號'); % 圖標題標注 axis([0,0.1,-1.1,1.1]); % 橫縱坐標范圍設(shè)置 line([0,0.1],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.1,0)的藍色實線,線寬為2%% ******************調(diào)制信號頻域波形****************** subplot(222); [mf,msf]=T2F(t,mt); % 傅里葉變換,得到縱坐標頻譜和橫坐標頻率 plot(mf,abs(msf),'Linewidth',2); % 畫出基帶信號頻譜,線寬為2 title('基帶信號的頻譜'); % 圖標題標注 xlabel('f/Hz'); % 橫坐標標注 ylabel('幅度/H(f)'); % 縱坐標標注 axis([-150 150 -inf inf]); % 橫縱坐標范圍設(shè)置%% ******************載波信號時域波形****************** subplot(223); fc=1000; % 載波頻率 zaibo=cos(2*pi*fc*t); % 載波時域信號 plot(t,zaibo,'r','Linewidth',2); % 時間t為橫坐標,載波信號zaibo為縱坐標繪圖,線寬為2,紅色 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 title('載波信號'); % 圖標題標注 axis([0,0.01,-1.1,1.1]); % 橫縱坐標范圍設(shè)置 line([0,0.01],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.01,0)的藍色實線,線寬為2%% ******************載波信號頻域波形****************** subplot(224); [mf1,msf1]=T2F(t,zaibo); % 傅里葉變換,得到縱坐標頻譜和橫坐標頻率 plot(mf1,abs(msf1),'r','Linewidth',2); % 載波信號頻譜,線寬為2,紅色 title('載波信號的頻譜'); % 圖標題標注 xlabel('f/Hz'); % 橫坐標標注 ylabel('幅度/H(f)'); % 縱坐標標注 axis([-1200 1200 -inf inf]); % 橫縱坐標范圍設(shè)置%% ******************DSB波信號時域波形****************** dsb=mt.*zaibo; % 畫出DSB信號波形 figure(2); % 繪制第二幅圖 subplot(211); % 窗口分割,將一幅圖分割成2*1的 plot(t,dsb,'Linewidth',2); % 畫出AM信號波形,線寬為2 title('DSB調(diào)制信號'); % 圖標題標注 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 axis([0,0.02,-3.1,3.1]); % 橫縱坐標范圍設(shè)置 line([0,0.02],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.02,0)的藍色實線,線寬為2%% ******************DSB波信號頻域波形****************** [mf2,msf2]=T2F(t,dsb); % 傅里葉變換,得到縱坐標頻譜和橫坐標頻率 subplot(212); plot(mf2,abs(msf2),'Linewidth',2); % 畫出DSB信號頻譜 title('DSB波信號的頻譜'); % 圖標題標注 xlabel('f/Hz'); % 橫坐標標注 ylabel('幅度/H(f)'); % 縱坐標標注 axis([-1500 1500 -inf inf]); % 橫縱坐標范圍設(shè)置%% ******************SSB波信號時域波形****************** [t,ssb]=lpf(mf2,msf2,fc); % 頻域低通濾波 %% 加噪聲 SNR=20; %信噪比為 dB ssb=awgn(ssb,SNR,'measured'); figure(3); % 繪制第三幅圖 subplot(211); % 窗口分割,將一幅圖分割成2*1的 plot(t,2*ssb,'Linewidth',2); % 繪制SSB波形 title('SSB信號波形'); % 圖標題標注 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 axis([0 0.01 -1.1 1.1]); % 橫縱坐標范圍設(shè)置 line([0,0.01],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.1,0)的藍色實線,線寬為2%% ******************SSB波信號頻域波形****************** [mf3,msf3]=T2F(t,ssb); % 傅里葉變換,得到縱坐標頻譜和橫坐標頻率 subplot(212); plot(mf3,abs(msf3),'Linewidth',2); % 畫出SSB信號頻譜 title('SSB波信號的頻譜'); % 圖標題標注 xlabel('f/Hz'); % 橫坐標標注 ylabel('幅度/H(f)'); % 縱坐標標注 axis([-1500 1500 -inf inf]); % 橫縱坐標范圍設(shè)置%% ******************相干解調(diào)****************** %% ******************已調(diào)信號與載波信號相乘****************** st=ssb.*zaibo; % 已調(diào)信號與載波信號相乘 figure(4); % 繪制第四幅圖 subplot(211); % 窗口分割,將一幅圖分割成2*1的 plot(t,st,'Linewidth',2); % 時間t為橫坐標,相乘信號st為縱坐標繪圖,線寬為2 title('已調(diào)信號與載波信號相乘'); % 圖標題標注 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 axis([0 0.04 -1.5,1.5]); % 橫縱坐標范圍設(shè)置 line([0,0.04],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.04,0)的藍色實線,線寬為2%% ******************已調(diào)信號與載波信號相乘的頻譜****************** [f,sf]=T2F(t,st); % 傅里葉變換,得到縱坐標頻譜和橫坐標頻率 subplot(212); % 窗口分割,將一幅圖分割成2*1的 plot(f,sf,'Linewidth',2); % 繪制相乘信號st的頻譜,線寬為2 title('已調(diào)信號與載波信號相乘的頻譜');% 圖標題標注 xlabel('f/Hz'); % 橫坐標標注 ylabel('幅度/H(f)'); % 縱坐標標注 axis([-2200 2200 -inf inf]); % 橫縱坐標范圍設(shè)置%% ******************解調(diào)出來的信號****************** [t,st]=lpf(f,sf,2*fm); % 頻域低通濾波 figure(5); % 繪制第五幅圖 subplot(211); % 窗口分割,將一幅圖分割成2*1的 plot(t,4*st,'Linewidth',2); % 繪制解調(diào)波形 title('經(jīng)過低通濾波的相干解調(diào)信號波形');% 圖標題標注 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 axis([0 0.1 -1.1 1.1]); % 橫縱坐標范圍設(shè)置 line([0,0.1],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.1,0)的藍色實線,線寬為2%% ******************原信號****************** subplot(212); plot(t,mt,'r-','Linewidth',2); % 繪制原始基帶信號 title('原始基帶信號'); % 圖標題標注 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 axis([0 0.1 -1.1 1.1]); % 橫縱坐標范圍設(shè)置 line([0,0.1],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.1,0)的藍色實線,線寬為2T2F.m文件,FFT功能
function [f,sf]= T2F(t,st) % FFT % dt = t(2)-t(1); T=t(end); % 輸入信號的時間最大值為T df = 1/T; % dt=1/fs; 時間采樣間隔,采樣頻率的倒數(shù);% N=T/dt; 采樣點個數(shù),總時長除以采樣間隔% 兩式聯(lián)合推導 df = 1/T N = length(st); % 輸入信號時間的長度為采樣點數(shù) f=-N/2*df : df : N/2 * df-df; % 頻率分布 sf = fft(st); % 做FFT sf = T/N * fftshift(sf); % 最后輸出,將0-fs頻譜搬移到-fs/2-fs/2頻譜F2T.m文件,IFFT功能
function[t,st]=F2T(f,Sf) % IFFT df=f(2)-f(1); % 頻率間隔 fmax=(f(end)-f(1)+df); % 最大頻率減最低頻率加上頻率間隔為帶寬 dt=1/fmax; % 采樣間隔 N=length(f); % 采樣點數(shù) t=[0:N-1] * dt; % 時間分布 Sf=fftshift(Sf); % 將0-fs頻譜搬移到-fs/2-fs/2頻譜 st=fmax * ifft(Sf); % 做IFFT st=real(st); % 取實部lpf.m文件,低通濾波功能
function[t,st]=lpf(f,sf,B) % 頻率LPF df=f(2)-f(1); % 頻率間隔 fN=length(f); % 采樣點數(shù) ym=zeros(1,fN); % 生成1行fN列的0向量 xm=floor(B/df); % 低頻帶寬頻率除以間隔后的點數(shù)向下取整 xm_shift=[-xm:xm-1]+floor(fN/2); % 因為前面做FFT將0頻率搬移到中心處,% 因此,低通低頻頻率相應地搬移fN/2,才是對應的頻率點 ym(xm_shift)=1; % 低通通過頻率處幅度為1,其余為0,相當于理想低通 yf=ym.* sf; % FFT信號的頻譜和對應低頻帶寬處頻率值為1的行向量相乘 [t,st]=F2T(f,yf); % IFFT注意:這四個文件要放在同一文件夾中,第一個是主文件,另外三個是函數(shù)文件
3.2 DSB經(jīng)過高通濾波器產(chǎn)生SSB
SSB2.m,SSB主文件
% SSB調(diào)制解調(diào)過程 %% 基本參數(shù) clear all; % 清除變量 close all; % 關(guān)閉所有窗口圖像 fm = 100; % 基帶信號頻率 T = 2; % 信號時長 fs = 20000; % 采樣頻率 奈奎斯特采樣定理為最大頻率的兩倍,這里取20倍為了繪制更多的細節(jié),讓時域信號更平滑 dt=1/fs; % 時間采樣間隔,采樣頻率的倒數(shù) N=T/dt; % 采樣點個數(shù),總時長除以采樣間隔 t=[0:N-1]*dt; % 采樣點的時間序列,作為橫坐標%% ******************調(diào)制信號時域波形****************** Am=1; % 基帶信號幅度 mt=Am*cos(2*pi*fm*t); % 基帶信號 figure(1); % 繪制第一幅圖 subplot(221); % 窗口分割,將一幅圖分割成2*2的 plot(t,mt,'Linewidth',2); % 時間t為橫坐標,基帶信號mt為縱坐標繪圖,線寬為2 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 title('基帶信號'); % 圖標題標注 axis([0,0.1,-1.1,1.1]); % 橫縱坐標范圍設(shè)置 line([0,0.1],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.1,0)的藍色實線,線寬為2%% ******************調(diào)制信號頻域波形****************** subplot(222); [mf,msf]=T2F(t,mt); % 傅里葉變換,得到縱坐標頻譜和橫坐標頻率 plot(mf,abs(msf),'Linewidth',2); % 畫出基帶信號頻譜,線寬為2 title('基帶信號的頻譜'); % 圖標題標注 xlabel('f/Hz'); % 橫坐標標注 ylabel('幅度/H(f)'); % 縱坐標標注 axis([-150 150 -inf inf]); % 橫縱坐標范圍設(shè)置%% ******************載波信號時域波形****************** subplot(223); fc=1000; % 載波頻率 zaibo=cos(2*pi*fc*t); % 載波時域信號 plot(t,zaibo,'r','Linewidth',2); % 時間t為橫坐標,載波信號zaibo為縱坐標繪圖,線寬為2,紅色 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 title('載波信號'); % 圖標題標注 axis([0,0.01,-1.1,1.1]); % 橫縱坐標范圍設(shè)置 line([0,0.01],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.01,0)的藍色實線,線寬為2%% ******************載波信號頻域波形****************** subplot(224); [mf1,msf1]=T2F(t,zaibo); % 傅里葉變換,得到縱坐標頻譜和橫坐標頻率 plot(mf1,abs(msf1),'r','Linewidth',2); % 載波信號頻譜,線寬為2,紅色 title('載波信號的頻譜'); % 圖標題標注 xlabel('f/Hz'); % 橫坐標標注 ylabel('幅度/H(f)'); % 縱坐標標注 axis([-1200 1200 -inf inf]); % 橫縱坐標范圍設(shè)置%% ******************DSB波信號時域波形****************** dsb=mt.*zaibo; % 畫出DSB信號波形 figure(2); % 繪制第二幅圖 subplot(211); % 窗口分割,將一幅圖分割成2*1的 plot(t,dsb,'Linewidth',2); % 畫出AM信號波形,線寬為2 title('DSB調(diào)制信號'); % 圖標題標注 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 axis([0,0.02,-3.1,3.1]); % 橫縱坐標范圍設(shè)置 line([0,0.02],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.02,0)的藍色實線,線寬為2%% ******************DSB波信號頻域波形****************** [mf2,msf2]=T2F(t,dsb); % 傅里葉變換,得到縱坐標頻譜和橫坐標頻率 subplot(212); plot(mf2,abs(msf2),'Linewidth',2); % 畫出DSB信號頻譜 title('DSB波信號的頻譜'); % 圖標題標注 xlabel('f/Hz'); % 橫坐標標注 ylabel('幅度/H(f)'); % 縱坐標標注 axis([-1500 1500 -inf inf]); % 橫縱坐標范圍設(shè)置%% ******************SSB波信號時域波形****************** [t,ssb]=hpf(mf2,msf2,fc); % 頻域低通濾波 %% 加噪聲 SNR=5; %信噪比為 dB ssb=awgn(ssb,SNR,'measured'); figure(3); % 繪制第三幅圖 subplot(211); % 窗口分割,將一幅圖分割成2*1的 plot(t,2*ssb,'Linewidth',2); % 繪制SSB波形 title('SSB信號波形'); % 圖標題標注 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 axis([0 0.01 -1.1 1.1]); % 橫縱坐標范圍設(shè)置 line([0,0.01],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.1,0)的藍色實線,線寬為2%% ******************SSB波信號頻域波形****************** [mf3,msf3]=T2F(t,ssb); % 傅里葉變換,得到縱坐標頻譜和橫坐標頻率 subplot(212); plot(mf3,abs(msf3),'Linewidth',2); % 畫出SSB信號頻譜 title('SSB波信號的頻譜'); % 圖標題標注 xlabel('f/Hz'); % 橫坐標標注 ylabel('幅度/H(f)'); % 縱坐標標注 axis([-1500 1500 -inf inf]); % 橫縱坐標范圍設(shè)置%% ******************相干解調(diào)****************** %% ******************已調(diào)信號與載波信號相乘****************** st=ssb.*zaibo; % 已調(diào)信號與載波信號相乘 figure(4); % 繪制第四幅圖 subplot(211); % 窗口分割,將一幅圖分割成2*1的 plot(t,st,'Linewidth',2); % 時間t為橫坐標,相乘信號st為縱坐標繪圖,線寬為2 title('已調(diào)信號與載波信號相乘'); % 圖標題標注 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 axis([0 0.04 -1.5,1.5]); % 橫縱坐標范圍設(shè)置 line([0,0.04],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.04,0)的藍色實線,線寬為2%% ******************已調(diào)信號與載波信號相乘的頻譜****************** [f,sf]=T2F(t,st); % 傅里葉變換,得到縱坐標頻譜和橫坐標頻率 subplot(212); % 窗口分割,將一幅圖分割成2*1的 plot(f,sf,'Linewidth',2); % 繪制相乘信號st的頻譜,線寬為2 title('已調(diào)信號與載波信號相乘的頻譜');% 圖標題標注 xlabel('f/Hz'); % 橫坐標標注 ylabel('幅度/H(f)'); % 縱坐標標注 axis([-2200 2200 -inf inf]); % 橫縱坐標范圍設(shè)置%% ******************解調(diào)出來的信號****************** [t,st]=lpf(f,sf,2*fm); % 頻域低通濾波 figure(5); % 繪制第五幅圖 subplot(211); % 窗口分割,將一幅圖分割成2*1的 plot(t,4*st,'Linewidth',2); % 繪制解調(diào)波形 title('經(jīng)過低通濾波的相干解調(diào)信號波形');% 圖標題標注 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 axis([0 0.1 -1.1 1.1]); % 橫縱坐標范圍設(shè)置 line([0,0.1],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.1,0)的藍色實線,線寬為2%% ******************原信號****************** subplot(212); plot(t,mt,'r-','Linewidth',2); % 繪制原始基帶信號 title('原始基帶信號'); % 圖標題標注 xlabel('t/時間'); % 橫坐標標注 ylabel('幅度'); % 縱坐標標注 axis([0 0.1 -1.1 1.1]); % 橫縱坐標范圍設(shè)置 line([0,0.1],[0,0],'color','b','Linewidth',2);% 繪制一條從(0,0)到(0.1,0)的藍色實線,線寬為2T2F.m文件,FFT功能
function [f,sf]= T2F(t,st) % FFT % dt = t(2)-t(1); T=t(end); % 輸入信號的時間最大值為T df = 1/T; % dt=1/fs; 時間采樣間隔,采樣頻率的倒數(shù);% N=T/dt; 采樣點個數(shù),總時長除以采樣間隔% 兩式聯(lián)合推導 df = 1/T N = length(st); % 輸入信號時間的長度為采樣點數(shù) f=-N/2*df : df : N/2 * df-df; % 頻率分布 sf = fft(st); % 做FFT sf = T/N * fftshift(sf); % 最后輸出,將0-fs頻譜搬移到-fs/2-fs/2頻譜F2T.m文件,IFFT功能
function[t,st]=F2T(f,Sf) % IFFT df=f(2)-f(1); % 頻率間隔 fmax=(f(end)-f(1)+df); % 最大頻率減最低頻率加上頻率間隔為帶寬 dt=1/fmax; % 采樣間隔 N=length(f); % 采樣點數(shù) t=[0:N-1] * dt; % 時間分布 Sf=fftshift(Sf); % 將0-fs頻譜搬移到-fs/2-fs/2頻譜 st=fmax * ifft(Sf); % 做IFFT st=real(st); % 取實部hpf.m文件,高通濾波功能
function[t,st]=hpf(f,sf,B) % 頻率HPF df=f(2)-f(1); % 頻率間隔 fN=length(f); % 采樣點數(shù) ym=zeros(1,fN); % 生成1行fN列的0向量 xm=floor(B/df); % 低頻帶寬頻率除以間隔后的點數(shù)向下取整xm_shift = [1:(-xm+floor(fN/2))]; % 因為前面做FFT將0頻率搬移到中心處, xm_shift2 = [xm-1+floor(fN/2):fN]; % 因此,低通低頻頻率相應地搬移fN/2,才是對應的頻率點% 所以,高通頻率為取互補的位置 ym(xm_shift)=1;ym(xm_shift2)=1; % 高通通過頻率處幅度為1,其余為0,相當于理想高通 yf=ym.* sf; % FFT信號的頻譜和對應高頻帶寬處頻率值為1的行向量相乘 [t,st]=F2T(f,yf); % IFFT4.SSB調(diào)制解調(diào)結(jié)果圖
結(jié)果圖中SSB信號是經(jīng)過信道,加了高斯白噪聲的。
如果不想加噪聲,把下面這行代碼注釋即可。
4.1 DSB經(jīng)過低通濾波產(chǎn)生SSB結(jié)果圖
4.2 DSB經(jīng)過高通濾波產(chǎn)生SSB結(jié)果圖
5.SSB的優(yōu)缺點
優(yōu)點:頻譜利用率高;
缺點:濾波器難以實現(xiàn),要求濾波器的截止特性比較陡峭。
總結(jié)
以上是生活随笔為你收集整理的通信原理与MATLAB(三):SSB的调制解调的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 公共命名空间和office文档
- 下一篇: word打开文档很久很慢_word文档