Matlab模拟2ask信号的调制解调+频谱图

Matlab模拟2ask信号的调制解调+频谱图,第1张

前言

Matlab模拟2ask信号的调制解调,传码率1K波特,载波频率10KHZ,画出时域频谱图。是我们的实验课作业,从网上拷贝代码,改出要求的样子,有一说一网上符合要求的很少。从没学过matlab和python绘图之类,勉强做出来了。如有疏漏不妥之处,还请不吝赐教!
以下是代码:

clear all; 
close all;
clc;
M=10;                     %产生码元数    
L=100;                    %每码元复制L次
Ts=0.001;                 %每个码元的宽度,即码元的持续时间
Rb=1/Ts;                  %码元速率1K
dt=Ts/L;                  %采样间隔
TotalT=M*Ts;              %总时间
t=0:dt:TotalT-dt;         %时间

%产生单极性波形
wave=randi([0,1],1,M);    %产生二进制随机码,M为码元个数
fz=ones(1,L);             %定义复制的次数L,L为每码元的采样点数
x1=wave(fz,:);            %复制的第1行复制L次
dnrz=reshape(x1,1,L*M);   %产生单极性不归零矩形脉冲波形
fc=10000;                 %载波频率10K        
zb=sin(2*pi*fc*t);
ask2=dnrz.*zb;            %2ASK的模拟调制
subplot(611)
plot(t,dnrz)
title('单极性不归零矩形脉冲')
axis([0,TotalT,-0.1,1.1])
subplot(612)
plot(t,ask2);
title('2ASK已调信号波形')
axis([0,TotalT,-1.1,1.1]);

%已调信号通过含有高斯白噪声的信道
tz=awgn(ask2,15);         %信号ask2中加入白噪声,信噪比为SNR=15dB
subplot(613);
plot(t,tz);
axis([0,TotalT,-1.5,1.5]);
title('通过高斯白噪声信道后的信号');

%解调部分
tz=tz.*zb;                   %相干解调之乘以相干载波
subplot(614)
plot(t,tz)                   %画出乘以相干载波后的信号
axis([0,TotalT,-0.1,1.1]);   %设置坐标范围
title("乘以相干载波后的信号")

%低通滤波器设计
wp=2*pi*2*fc*0.5;            %通带截止烦率
ws=2*pi*2*fc*0.9;            %阻带截止频率
Rp=2;                        %Rp是通带波纹,As是阻带衰诚
As=45;
[N,wc]=buttord(wp,ws,Rp,As,'s');%计算巴特洪斯滤波器阶次和截止频率
[B,A]=butter(N,wc,'s');         %频率变换法设计巴特沃斯低通滤波器

%低通滤波
h=tf(B,A);                   %转换为传输两数
dst=lsim(h,tz,t);            %面出系统h对由nst和t描述的输入信号的时间响应
subplot(615)
plot(t,dst)                  %画出经过低通滤波器后的信号
axis([0,TotalT,-0.1,1.1]);   %设置坐标范围
title("经过低通滤波器后的信号");

%判决器
k=0.25;                      %设置抽样限值
pdst=1*(dst>0.25);           %满足条件时抽样
subplot(616)
plot(t,pdst)                 %画出经过抽样判决后的信号
axis([0,TotalT,-0.1,1.1]);   %设置坐标范用
title("经过抽样判决后的信号")

%画出频谱
%调制信号频谱
T=t(end);%时间
df=1/T;%频率
N=length(ask2);%采样长度
f=(-N/2:N/2-1)*df;%采样频率
sf=fftshift(abs(fft(ask2)));%对2ASK信号采用快速傅里叶变换并移到矩阵中心
figure(2)
subplot(411)
plot(f,sf)%画出调制信号频谱
title("调制信号频谱")

%信源频谱
mf=fftshift(abs(fft(dnrz)));%对信源信号采用快速傅里叶变换并移到矩阵中心
subplot(412)
plot(f,mf) %画出信源频谱波形
title("信源频谱")

%乘以相干载波后的频谱
mmf=fftshift(abs(fft(tz)));%对相干载波信号采用快速傅里叶变换并移到矩阵中心
subplot(413)
plot(f,mmf) %画出乘以相干载波后的频谱
title("乘以相干载波后的频谱")

%经过低通滤波后的频谱
dmf=fftshift(abs(fft(dst)));%对低通滤波信号采用快速傅里叶变换并移到矩阵中心
subplot(414)
plot(f,dmf) %画出经过低通滤波后的频谱
title("经过低通滤波后的频谱");

一些补充

1、开始输入随机信号生成部分,matlab中randint(m,n,[A,B])已经不能用,要用randi([A,B],m,n)。生成取值在[A,B]的m*n的矩阵。
2、采用模拟调制,相干解调。
有什么问题可以留言~

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/726853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存