一、实验目的
了解二进制数字信号2ASK波形特点,掌握2ASK调制解调系统的构成,基带信号、载波和2ASK已调信号之间的关系;掌握利用matlab对2ASK进行仿真的分析方法。
二、实验任务
利用matlab实现对2ASK信号调制与解调的仿真,其中设定码元个数为42,分别给出:
(1)消息信号、2ASK信号和解调信号的波形;
(2)给出2ASK信号在AWGN信道下的误码率和误比特率性能,并与理论值相比较。利用matlab仿真软件编写程序,完成相应实验内容。
简述2ASK调制解调系统的工作原理和程序设计思路,分别给出(1)无噪声时,消息信号、2ASK信号和解调信号的波形;(2)加入AWGN时,给出BER、SER和理论值随SNR变化的曲线。
三、实验代码
2ASK在无噪声情况下的调制与解调代码:
clc,clear;
i=42; %42个码元
j=42000;
t=linspace(0,42,j); %0~42之间产生42000个点行向量,即分成42000份
fc=1; %载波频率
fm=i; %码元速率
%产生基带信号
x=(rand(1,i)) %rand函数产生在0~1之间随机数,共42个
a=round(x); %随机序列,round取最接近小数的整数
st=t;
for n=1:i
if a(n)<1
for m=j/i*(n-1)+1:j/i*n
st(m) = 0;
end
else
for m=j/i*(n-1)+1:j/i*n
st(m)=1;
end
end
end
figure(1);
subplot(221);
plot(t,st);
axis([0,42,-0.2,1.2]);
title('基带信号');
s1=cos(2*pi*fc*t); %载波
subplot(222);
plot(t,s1);
axis([0,42,-1.2,1.2]);
title('载波信号');
e_2ask=st.*s1; %调制
subplot(223);
plot(t,e_2ask);
axis([0,42,-1.2,1.2]);
title('已调信号');
at = e_2ask.*cos(2*pi*fc*t); %相干解调
at=at-mean(at); %因为是单极性波形,还有直流分量,应去掉
[f,af]= T2F(t,at); %通过低通滤波器
[t,at]= lpf(f,af,2*fm);
%采样判决
for m=0:i-1
if at(1,m*1000+500)+0.5<0.5
for j=m*1000+1:(m+1)*1000
at(1,j)=0;
end
else
for j=m*1000+1:(m+1)*1000
at(1,j)=1;
end
end
end
subplot(224);
plot(t,at);
axis([0,42,-0.2,1.2]);
title('相干解调后波形');
function [f,sf]= T2F(t,st)
%利用FFT计算信号的频谱并与信号的真实频谱的抽样比较。
%函数T2F,计算信号的傅立叶变换。
%Input is the time and the signal vectors,the length of time must greater
%than 2
%Output is the frequency and the signal spectrum
dt = t(2)-t(1);
T=t(end);
df = 1/T;
N = length(st);
f=-N/2*df : df : N/2*df-df;
sf = fft(st);
sf = T/N*fftshift(sf);
end
function [t,st]=F2T(f,sf)
%计算信号的反傅立叶变换。
%This function calculate the time signal using ifft function for the input
df = f(2)-f(1);
Fmx = ( f(end)-f(1) +df);
dt = 1/Fmx;
N = length(sf);
T = dt*N;
%t=-T/2:dt:T/2-dt;
t = 0:dt:T-dt;
sff = fftshift(sf);
st = Fmx*ifft(sff);
end
function [t,st]=lpf(f,sf,B)
%This function filter an input data using a lowpass filter
%Inputs: f: frequency samples
% sf: input data spectrum samples
% B: lowpass bandwidth with a rectangle lowpass
%Outputs: t: time samples
% st: output data time samples
df = f(2)-f(1);
T = 1/df;
hf = zeros(1,length(f)); %全零矩阵
bf = [-floor( B/df ): floor( B/df )] + floor( length(f)/2 );
hf(bf)=1;
yf=hf.*sf;
[t,st]=F2T(f,yf);
st = real(st);
end
四、实验结果
图1 无噪声下消息信号、2ASK信号和解调信号的波形
图2 有噪声下消息信号、2ASK信号和解调信号的波形(码元个数42)
图4 误比特数和误码率(SNR=10)
图5 误码率和信噪比之间的关系曲线
如需要完整的matlab仿真代码和实验报告,请自行付积分查看,链接如下: