?? dsb.m
字號:
%dsb.m
%雙邊帶調制與解調的Matlab演示源程序
%可以任意改原調制信號函數m(t)
%本例調制信號為m(t)=sinc(100*t)
echo off
close all
clc
t0=0.2; %信號的持續時間,用來定義時間向量
ts=0.001; %抽樣間隔
fs=1/ts; %抽樣頻率
%*********************************************************************
fc=300; %載波頻率,fc可以任意改變
%*********************************************************************
t=[-t0/2:ts:t0/2]; %時間向量
df=0.25; %所需的頻率分辨率
%*********************************************************************
m=sinc(100*t); %調制信號,m(t)可以任意更改
%*********************************************************************
c=cos(2*pi*fc.*t); %載波信號函數,照原理上它也可以任意更改
u=m.*c; %已調信號
y=u.*c; %混頻信號,用來提取原調制信號的頻率
[M,m,df1]=fftseq(m,ts,df); %對調制信號m(t)求傅里葉變換
M=M/fs; %縮放,便于在頻譜圖上整體觀察
[U,u,df1]=fftseq(u,ts,df); %對調制后的信號u求傅里葉變換
U=U/fs; %縮放
[Y,y,df1]=fftseq(y,ts,df); %對混頻后的信號y求傅里葉變
Y=Y/fs; %縮放
%*********************************************************************
%以下這段程序是專門用來構建在頻譜上的濾波器的方法
f_cutoff=150; %濾波器的截止頻率
n_cutoff=floor(150/df1); % 設計的濾波器的帶寬
f=[0:df1:df1*(length(y)-1)]-fs/2; %頻率分量
H=zeros(size(f)); %構建濾波器的步驟之一
H(1:n_cutoff)=2*ones(1,n_cutoff); %構建濾波器的步驟之一
H(length(f)-n_cutoff+1:length(f))=2*ones(1,n_cutoff);%濾波器的頻帶函數
%********************************************************************
DEM=H.*Y; %經過濾波器后輸出信號的頻譜
dem=real(ifft(DEM))*fs; %ifft為傅里葉反變換函數,濾波器的輸出-解調信號
%乘以fs是為了恢復原信號,因為前面使用了縮放
disp('按任意鍵可看到混頻的效果')
pause
figure(1)
subplot(3,1,1)
plot(f,fftshift(abs(M)))%fftshift:將FFT中的DC分量移到頻譜中心
title('原調制信號的頻譜圖')
xlabel('頻率f')
subplot(3,1,2)
plot(f,fftshift(abs(U)))
title('已調信號的頻譜圖')
xlabel('頻率f')
subplot(3,1,3)
plot(f,fftshift(abs(Y)))
title('混頻信號的頻譜圖')
xlabel('頻率f')
disp('按任意鍵可看到混頻器輸出的波形的頻譜效果')
pause
figure(2)
subplot(3,1,1)
plot(f,fftshift(abs(Y)))
title('混頻信號的頻譜圖')
xlabel('頻率f')
subplot(3,1,2)
plot(f,fftshift(abs(H)))
title('低通濾波器的頻譜圖')
xlabel('頻率f')
subplot(3,1,3)
plot(f,fftshift(abs(DEM)))
title('混頻信號通過濾波器后的信號的頻譜圖')
xlabel('頻率f')
disp('按任意鍵可看到原調制信號和接受信號頻譜的比較')
pause
figure(3)
subplot(2,1,1)
plot(f,fftshift(abs(M)))
title('原調制信號的頻譜圖')
xlabel('頻率f')
subplot(2,1,2)
plot(f,fftshift(abs(DEM)))
title('混頻信號通過濾波器后的信號的頻譜圖')
xlabel('頻率f')
disp('按任意鍵可看到原調制信號和解調器輸出信號對比')
pause
figure(4)
subplot(2,1,1)
plot(t,m(1:length(t)))
title('原調制信號的時域圖')
xlabel('時間t')
subplot(2,1,2)
plot(t,dem(1:length(t)))
title('解調后信號的時域圖')
xlabel('時間t')
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -