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

前言

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、采用模拟调制,相干解调。
有什么问题可以留言~

  • 11
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
好的,下面是一个基本的2ASK调制解调Matlab代码示例: ```matlab % 2ASK调制解调Matlab代码示例 fs = 1000; % 采样频率 fc = 100; % 载波频率 Am = 1; % 调制信号的幅度 Ac = 2; % 载波信号的幅度 fm = 10; % 调制信号的频率 t = 0:1/fs:1; % 信号的时间范围 % 生成调制信号 m = Am*sin(2*pi*fm*t); % 生成载波信号 c = Ac*sin(2*pi*fc*t); % 2ASK调制 s = (m>=0).*c + (m<0).*(-c); % 添加高斯白噪声 SNR = 10; % 信噪比 n = randn(1,length(s)); % 高斯白噪声 Pn = sum(n.^2)/length(n); % 噪声功率 Ps = sum(s.^2)/length(s); % 信号功率 n = n*sqrt(Ps/Pn/10^(SNR/10));% 根据信噪比计算噪声幅度 r = s + n; % 添加高斯白噪声 % 2ASK解调 m_demod = r.*c; % 相乘 [b,a] = butter(6,2*pi*fm/fs); % 设计低通滤波器 m_filtered = filter(b,a,m_demod);% 低通滤波 % 绘图 subplot(3,1,1); plot(t,m); title('调制信号'); subplot(3,1,2); plot(t,r); title('调制信号添加高斯白噪声后的信号'); subplot(3,1,3); plot(t,m_filtered); title('解调后的信号'); ``` 上述代码中,首先定义了采样频率、载波频率、调制信号幅度、载波信号幅度、调制信号频率、信号的时间范围和信噪比等参数。然后使用sin函数生成调制信号和载波信号,根据调制信号的正负性选择不同的载波信号进行2ASK调制,并添加高斯白噪声。接着将添加了噪声的信号进行2ASK解调,即将信号与载波信号相乘,并使用低通滤波器对解调后的信号进行滤波,得到最终的解调信号。最后使用subplot函数对调制信号、添加噪声的信号和解调后的信号进行绘图。 上述代码中使用了butter函数设计了6阶低通滤波器,如果需要更高的滤波效果,可以增加滤波器阶数或者使用其他类型的滤波器。此外,代码中的信噪比为10dB,您可以根据需要进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值