资讯详情

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

前言

Matlab模拟2ask信号调制解调,传码率1K载波频率为10的波特KHZ,画时域频谱图。这是我们的实验课作业。我们从网上复制代码,改变要求。很少有人说我们在网上符合要求。我从未学过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、采用模拟调制,相干解调。 有什么问题可以留言~

标签: fz系列无源交流电流隔离变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台