m=m/1000;
c=cos(2*pi*fc.*t); % 载波信号 m_n=m/max(abs(m)); % 归一化 [M,m,df1]=fftseq(m,ts,df); % 傅里叶变换 M=M/fs; % 频率缩放,便于作图 f=[0:df1:df1*(length(m)-1)]-fs/2; % 定义频率向量
u=(1+a*m_n).*c; % 将调制信号调制到载波上 [U,u,df1]=fftseq(u,ts,df); % 对已调信号进行傅里叶变化 U=U/fs; % 频率缩放 signal_power=spower(u(1:length(t))); % 计算信号功率 pmn=spower(m(1:length(t)))/(max(abs(m)))^2; % 计算调制信号功率 eta=(a^2*pmn)/(1+a^2*pmn); % 计算调制效率 noise_power=eta*signal_power/snr_lin; % 计算噪声功率 noise_std=sqrt(noise_power); % 噪声标准差
noise=noise_std*randn(1,length(u)); % 产生高斯分布的噪声 r=u+noise; % 总接收信号,即加噪信号 [R,r,df1]=fftseq(r,ts,df); % 对总信号进行傅里叶变换 R=R/fs; % 频率缩放 % 以下为结果显示 signal_power pmn noise_power eta figure(1)
subplot(2,2,1); plot(t,m(1:length(t))); xlabel('时间'); title('调制信号'); subplot(2,2,3); plot(t,u(1:length(t))); xlabel('时间'); title('已调信号'); subplot(2,2,2); plot(f,abs(fftshift(M))); xlabel('频率'); title('调制信号的频谱'); subplot(2,2,4); plot(f,abs(fftshift(U))); xlabel('频率'); title('已调信号的频谱'); figure(2)
subplot(2,2,1); plot(t,noise(1:length(t))); xlabel('时间'); title('噪声'); subplot(2,2,3); plot(t,r(1:length(t))); xlabel('时间'); title('加噪信号'); subplot(2,2,2); plot(f,abs(fftshift(U))); xlabel('频率'); title('信号频谱'); subplot(2,2,4); plot(f,abs(fftshift(R))); xlabel('频率'); title('加噪信号频谱'); %---------------------------------------------------------------------------------------------------------------
21
function [M,m,df]=fftseq(m,ts,df) fs=1/ts;
if nargin==2 % 判断输入参数的个数是否符合要求 n1=0; else
n1=fs/df; % 根据参数个数决定是否使用频率缩放 end
n2=length(m);
n=2^(max(nextpow2(n1),nextpow2(n2))); M=fft(m,n); % 进行离散傅里叶变换 m=[m,zeros(1,n-n2)]; df=fs/n;
%--------------------------------------------------------------------------------------------------------------- function p=spower(x) % 计算信号的功率 p=(norm(x)^2)/length(x); 程序运行结果如下 signal_power = 0.6074 pmn = 0.3327 noise_power = 0.0107 eta =
0.1755
调制信号0.20.030.0250.10.0200.0150.01-0.10.005-0.200.10.20.3时间已调信号20.40.40.50-5000频率已调信号的频谱500调制信号的频谱10.300.2-10.1-200.10.20.3时间0.40.50-5000频率500 图4.2 调幅信号及其频谱
22
噪声0.40.4信号频谱0.20.300.2-0.20.1-0.400.10.20.3时间加噪信号0.40.50-5000频率加噪信号频谱50020.410.300.2-10.1-200.10.20.3时间0.40.50-5000频率500 图4.3 加噪调幅信号及其频谱
2.模拟线性解调原理 (1) 包络检波法
对AM信号,当满足m0?m(t)'max时,不会发生过调制现象,此时用包络检波的方法
很容易恢复原始基带信号m(t)。如图4.4所示。
SAM(t)包络检波器Km(t)
图4.4 包络检波法
(2) 同步解调法
双边带信号不能用包络检波来解调,只能采用同步解调法,即相干解调,其原理如图4.5所示。
SDSB(t)?cos?ct图4.5 同步解调法
低通Km(t)
相干解调的关键是必须产生一个同频同相的本地载波,如果同频同相的条件得不到保证,则会破坏基带信号的恢复。所以,所需的设备比包络检波法复杂。
同理,单边带(SSB)信号和残留边带(VSB)信号也可采用同步解调的方法恢复出基带信号
m(t)。
3.MATLAB函数
23
在MATLAB中,modulate函数实现对信号的调制,demod函数是modulate函数的反过程,即实现对信号的解调。
(1) modulate函数
格式:y=modulate(x,Fc,Fs,'method') y=modulate(x,Fc,Fs,'method',opt) [y,t]=modulate(x,Fc,Fs,'method',opt)
其中,x是要调制的信号序列,Fc是载波频率,Fs是采样频率(采样频率Fs至少是载波频率Fc的2倍),method是采用的调制方法,opt是method指定的调制方法所需的参数(并不是每种方法都需要附加参数),t可以输出计算时间。表4.1列出method对应的调制方式。
表4.1 modulate中method所对应的调制方式 method amdsb-sc amdsb-tc或am
amssb fm pm pwm ppm qam
调制方式 双边带抑制载波调制 双边带带载波调制 单边带调制 频率调制 相位调制 脉冲宽度调制 脉冲相位调制 正交幅度调制
(2) demod函数
格式:x=demod(y,Fc,Fs,'method') x=demod(x,Fc,Fs,'method',opt)
其中,y是已调制信号,其余参数与modulate函数中的一样。
三、设计内容
1.已知未调制信号为
??sinc(200t) t?t0m(t)??
0 其余t?? 若t0取2s,载波为c(t)?cos2?fct,fc?100Hz,用抑制载波调幅来调制信号,画出调制信号和已调信号的时域波形及频谱图。
2.已知未调制信号为
2??[sinc(200t)] t?t0m(t)??
0 其余t?? 若t0取2s,载波为c(t)?cos2?fct,fc?100Hz,画出单边带调幅波的时域波形及频谱图。
24
3.若消息信号m(t)定义为
0?t?t03?1 ?m(t)??-2 t03?t?2t03
?0 其余t?将其调制在载波c(t)?cos2?fct上,假设t0?0.15s,fc?250Hz,调制系数a?0.85,分别采用AM、DSB和SSB三种调制方式,画出调制信号和已调信号的时域波形及频谱图。
4.对于第3题中的DSB信号采用同步解调法解调,画出解调信号的时域波形及频谱图,并与原始消息信号m(t)进行比较。
5.对于第3题中的AM信号采用包络检波法解调,画出解调信号的时域波形,并与原始消息信号m(t)进行比较。
6.对抑制载波的双边带调制解调系统进行仿真。设传输的基带信号为正弦波,幅度为1,频率范围为1~10Hz,载波频率为100Hz,传输信道为高斯白噪声信道,其信噪比为10dB,系统仿真采样频率设置为1000Hz。
提示:仿真中用到的主要模块有“Signal Generator”模块、“DSBSC AM Modulator Passband”模块、“DSBSC AM Demodulator Passband”模块和“AWGN Channel”模块。
25