%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])