本人的程序直接复制粘贴,硬用即可,没有用外部程序,也没写子功能。
首先,调制部分:
%% 2ASK信号产生
clc;
clear;
s=[1 0 1 1 0 0 1 0];%二进制码元
f=2;%载波频率
t=0:2*pi/99:2*pi;%码元宽度:1-100
m1=[];c1=[];
for n=1:length(s)
if s(n)==0
m=zeros(1,100);%产生全为0的矩阵,长度为码元宽度
else
m=ones(1,100);%产生全为1的矩阵,长度为码元宽度
end
c=sin(f*t);%一个码元宽度内的正弦载波信号
m1=[m1 m];%二进制单极性不归零码
c1=[c1 c];%所有码元的正弦载波信号
end
ask=c1.*m1;%相乘器法产生2ASK信号
figure(1)
subplot(311); plot(m1); title('原始信号');
axis([0 100*length(s) -0.1 1.1]);ylabel('幅度');
subplot(312); plot(c1); title('载波信号');
axis([0 100*length(s) -1.1 1.1]);ylabel('幅度');
subplot(313); plot(ask);title('2ASK信号');
axis([0 100*length(s) -1.1 1.1]);ylabel('幅度');
可以得到结果,
然后,我们用包络检波法,
其中,全波整流器部分:
%% 全波整流器
x=abs(ask);
figure(2)
subplot(311);plot(x);title('全波整流器');
axis([0 100*length(s) -0.1 1.1]);ylabel('幅度');
还有,低通滤波器:
%% 低通滤波器
wp=4*pi*f*0.4;%通带截止频率
ws=4*pi*f*1.2;%阻带起始频率
rp=2;%通带最大衰减
rs=30;%阻带最小衰减
[N,wc]=buttord(wp,ws,rp,rs,'s');%buttord型模拟低通滤波器,s代表模拟,s省略代表数字,N为滤波器阶数,wc为3dB截频
[num,den]=butter(N,wc,'s');%由原型滤波器向实际滤波器转换,获得滤波器的分子系数num,分母系数den
h=tf(num,den);%获得滤波器传递函数
M=50;%一个正弦周期内的采样点数
L=length((kron(s,c)));
tau=(0:L-1)/(M-1)/f;
y=lsim(h,x,tau);
subplot(312);plot(tau,y);title('滤波后的波形');
axis([min(tau) max(tau) -0.1 0.8]);ylabel('幅度');
还有,抽样判决器:
%% 抽样判决器
th=0.25;%抽样判决的阈值
t_judge=(0:8-1)*length(c)+length(c)/2;%抽样判决点的选取
z=(y(t_judge))';%抽样判决时刻的信号值
y_judge=1*(z>=th)+0*(z<=th);%抽样判决信号的0阶保持
y_value=kron(y_judge,ones(size(c)));%抽样判决后的数字信号波形
n_tau=tau+0.5/100;%抽样判决后的信号对应时间
subplot(313);plot(n_tau,y_value);title('抽样判决后的数字信号');
axis([0 8 -0.1 1.1]);ylabel('幅度');
可得,
完整程序如下,
%% 2ASK信号产生
clc;
clear;
s=[1 0 1 1 0 0 1 0];%二进制码元
f=2;%载波频率
t=0:2*pi/99:2*pi;%码元宽度:1-100
m1=[];c1=[];
for n=1:length(s)
if s(n)==0
m=zeros(1,100);%产生全为0的矩阵,长度为码元宽度
else
m=ones(1,100);%产生全为1的矩阵,长度为码元宽度
end
c=sin(f*t);%一个码元宽度内的正弦载波信号
m1=[m1 m];%二进制单极性不归零码
c1=[c1 c];%所有码元的正弦载波信号
end
ask=c1.*m1;%相乘器法产生2ASK信号
figure(1)
subplot(311); plot(m1); title('原始信号');
axis([0 100*length(s) -0.1 1.1]);ylabel('幅度');
subplot(312); plot(c1); title('载波信号');
axis([0 100*length(s) -1.1 1.1]);ylabel('幅度');
subplot(313); plot(ask);title('2ASK信号');
axis([0 100*length(s) -1.1 1.1]);ylabel('幅度');
%% 2ASK信号非相干解调
%% 全波整流器
x=abs(ask);
figure(2)
subplot(311);plot(x);title('全波整流器');
axis([0 100*length(s) -0.1 1.1]);ylabel('幅度');
%% 低通滤波器
wp=4*pi*f*0.4;%通带截止频率
ws=4*pi*f*1.2;%阻带起始频率
rp=2;%通带最大衰减
rs=30;%阻带最小衰减
[N,wc]=buttord(wp,ws,rp,rs,'s');%buttord型模拟低通滤波器,s代表模拟,s省略代表数字,N为滤波器阶数,wc为3dB截频
[num,den]=butter(N,wc,'s');%由原型滤波器向实际滤波器转换,获得滤波器的分子系数num,分母系数den
h=tf(num,den);%获得滤波器传递函数
M=50;%一个正弦周期内的采样点数
L=length((kron(s,c)));
tau=(0:L-1)/(M-1)/f;
y=lsim(h,x,tau);
subplot(312);plot(tau,y);title('滤波后的波形');
axis([min(tau) max(tau) -0.1 0.8]);ylabel('幅度');
%% 抽样判决器
th=0.25;%抽样判决的阈值
t_judge=(0:8-1)*length(c)+length(c)/2;%抽样判决点的选取
z=(y(t_judge))';%抽样判决时刻的信号值
y_judge=1*(z>=th)+0*(z<=th);%抽样判决信号的0阶保持
y_value=kron(y_judge,ones(size(c)));%抽样判决后的数字信号波形
n_tau=tau+0.5/100;%抽样判决后的信号对应时间
subplot(313);plot(n_tau,y_value);title('抽样判决后的数字信号');
axis([0 8 -0.1 1.1]);ylabel('幅度');
感谢采纳,刚刚大二,不到位之处敬请指正。
后续,忙活了这些天,终于把文章写完了,目录如下,