|
%DSB_AM调制
%题1求解
clear all;
clc;
echo on
t0 = 0.15; %定义信号持续时间
ts = 0.0001; %定义仿真时的信号采样率
fc = 250; %定义载波信号
snr = 20; %定义信噪比,单位dB
fs = 1/ts; %采样频率
df = 0.2; %定义频谱分辩力
t = [0:ts:t0]; %时间矢量
snr_lin = 10^(snr/10); %线性的信噪比
%传输的信号
m = [ones(1,ceil(t0/(3*ts))),-2*ones(1,ceil(t0/(3*ts))),zeros(1,ceil(t0/(3*ts)+1))];
c = cos(2*pi*fc.*t); %载波
u = m.*c; %调制
[M,m,df1]=fftseq(m,ts,df); %传输的信号的频谱
M = M/fs; %频谱采样
[U,u,df1]=fftseq(u,ts,df); %调制信号频谱
U=U/fs; %频谱采样
[C,c,df]=fftseq(c,ts,df); %载波信号频谱
C = C/fs; %频率采样
%频谱矢量
f = [0:df1:df1*(length(m)-1)]-fs/2;
%信号的功率
signal_power=spower(u(1:length(t)));
%噪声的功率
noise_power=signal_power/snr_lin;
%噪声的标准差
noise_std=sqrt(noise_power);
%产生最后的噪声
n=noise_std*randn(1,length(u));
r=u+n; %将信号加到噪声上
[N,n,df1]=fftseq(n,ts,df); %对噪声进行fft
N = N/fs; %频率采样
[R,r,df1]=fftseq(r,ts,df); %对最后的信号进行fft
R = R/fs; %进行采样
%显示出没有噪声的情况
figure %显示第一张图片(第一题解)
subplot(3,2,1) %消息信号时域显示
plot(t,m(1:length(t)))
title('原始信号')
axis([0 0.15 -3 3])
subplot(3,2,2) %消息信号频域显示
plot(f,abs(fftshift(M)))
title('原始信号的频率')
axis([-500 500 0 0.15])
subplot(3,2,3) %调制载波时域显示
plot(t,c(1:length(t)))
title('载波信号')
axis([0 0.15 -3 3])
subplot(3,2,4) %调制载波频域显示
plot(f,abs(fftshift(C)))
title('载波的频率')
axis([-500 500 0 0.15])
subplot(3,2,5) %调制信号时域显示
plot(t,u(1:length(t)))
title('调制信号')
axis([0 0.15 -3 3])
subplot(3,2,6) %调制信号频域显示
plot(f,abs(fftshift(U)))
title('调制信号的频率')
axis([-500 500 0 0.15])
%噪声分析
figure %显示第二章图片(第二题解)
subplot(2,2,1) %噪声时域显示
plot(t,n(1:length(t)))
title('采样的噪声')
axis([0 0.15 -1 1])
subplot(2,2,2) %噪声频域显示
plot(f,abs(fftshift(N)))
axis([-500 500 0 0.05])
title('信号频谱')
subplot(2,2,3) %加噪调制信号时域显示
plot(t,r(1:length(t)))
title('信号与噪声')
axis([0 0.15 -3 3])
subplot(2,2,4) %加噪调制信号频域显示
plot(f,abs(fftshift(R)))
title('信号与噪声')
axis([-500 500 0 0.15])
|