基于MATLAB的二进制数字调制与解调信号的仿真——2ASK

2023-11-18

        实现二进制数字调制与解调信号的仿真是我的MATLAB课程设计的一部分,我参考了网上的一些资料,并加入了一些自己的想法,代码已在本地MATLAB编译通过且能正常运行

       2ASK——二进制振幅键控

i=10;%10个码元
j=5000;
t=linspace(0,5,j);%0-5之间产生5000个点行矢量,即将[0,5]分成5000份
fc=10;%载波频率
fm=i/5;%码元速率
%产生基带信号
x=(rand(1,i));%rand函数产生在0-1之间随机数,共1-10个
%figure(2)l;plot(x);
a=round(x);%随机序列,round取最接近小数的整数
%>0.5的值就为1,<0.5的值就为0
%figure(3);stem(a);%火柴梗状图

st=t;
for n=1:10
    if a(n)<1
        disp(j/i*(n-1))
        for m=j/i*(n-1)+1:j/i*n  %a(1)是1的话,就将0-1赋值为1
            st(m)=0;
        end
    else
        for m=j/i*(n-1)+1:j/i*n
            st(m)=1;
        end
    end
end
figure(1);
subplot(421);
plot(t,st);

axis([0,5,-1,2]);
title('基带信号st');
%载波
s1=cos(2*pi*fc*t);
subplot(422);
plot(s1);
title('载波信号s1');

%调制
e_2ask=st.*s1;%st是基带信号,s1是载波
subplot(423);
plot(t,e_2ask);
title('已调信号');

noise =rand(1,j);
e_2ask=e_2ask+noise;%加入噪声
subplot(424);
plot(t,e_2ask);
title('加入噪声的信号');

%相干解调
at=e_2ask.*cos(2*pi*fc*t);%这里用的cos必须和载波s1完全同步
%subplot(428);plot(t,at);
at=at-mean(at);%因为是单极性波形,还有直流分量,应去掉
subplot(425);
plot(t,at);
title('与载波相乘后信号');

[f,af] = T2F(t,at);%通过低通滤波器
[t,at] = lpf(f,af,2*fm);
subplot(426);
plot(t,at);
title('相干解调后波形');

%抽样判决
for m=0:i-1 %i=10   i是码元个数
    if (at(1,m*500+250)+0.5)<0.5%500是1个码元的长度,+250就是正好每次都定位到每个码元中部
        for j=m*500+1:(m+1)*500%如果判决这位码元的值<0.5,那么这个码元判为0
            at(1,j)=0;
        end
    else
        for j=m*500+1:(m+1)*500
            at(1,j)=1;%否则判为1
        end
    end
end
subplot(427);
plot(t,at);
axis([0,5,-1,2]);
title('抽样判决后波形')

用到的函数

①T2F.m

function [f,sf]= T2F(t,st)
%利用FFT计算信号的频谱并与信号的真实频谱的抽样比较。
%脚本文件T2F.m定义了函数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);

②F2T.m

function [t,st]=F2T(f,sf)
%脚本文件F2T.m定义了函数F2T,计算信号的反傅立叶变换。
%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);

③lpf.m

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);

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于MATLAB的二进制数字调制与解调信号的仿真——2ASK 的相关文章

  • MATLAB中如何画水平线和垂直线?

    我目前正在尝试在 MATLAB 中绘制简单的垂直线和水平线 例如 我想绘制线 y 245 我该怎么做呢 MATLAB 根据您提供的向量逐点进行绘图 因此 要创建一条水平线 您需要改变x同时保持y对于垂直线恒定 反之亦然 xh 0 10 yh
  • 按元素出现的频率对数组元素进行排序

    是否可以在 matlab octave 中使用sort函数根据元素的相对频率对数组进行排序 例如数组 m 4 4 4 10 10 10 4 4 5 应该产生这个数组 5 10 10 10 4 4 4 4 4 5是出现频率较低的元素 位于顶部
  • 不等间隔时间序列的移动平均线

    我有一个证券交易所股票价格的数据集 时间 价格 但数据点之间的间隔并不相等 从 1 到 2 分钟不等 在这种情况下计算移动平均值的最佳实践是什么 如何在Matlab中实现呢 我倾向于认为 点的权重应该取决于自上一个点以来的最后时间间隔 Ma
  • 如何找到在matlab中重复的矩阵的每一行的索引?

    我想找到矩阵中所有有重复项的行的索引 例如 A 1 2 3 4 1 2 3 4 2 3 4 5 1 2 3 4 6 5 4 3 要返回的向量将是 1 2 4 很多类似的问题建议使用unique函数 我已经尝试过 但我能得到的最接近我想要的功
  • 如何在没有安装Visual Studio的另一台机器上使用Visual Studio生成的dll?

    我已经在 Visual Studio 2012 中生成了动态库 我想在另一台机器上使用该库 但我不想在远程机器上安装 Visual Studio 我有 mex 库和 dll 我想运行一个使用这两个库的脚本 当我运行脚本时 出现以下错误 缺少
  • 有没有办法在matlab中进行隐式微分

    我经常使用 matlab 来帮助我解决数学问题 现在我正在寻找一种在 matlab 中进行隐式微分的方法 例如 我想区分y 3 sin x cos y exp x 0关于dy dx 我知道如何使用数学方法通常做到这一点 但我一直在努力寻找使
  • 如何告诉 mex 链接到 /usr/lib 中的 libstdc++.so.6 而不是 MATLAB 目录中的 libstdc++.so.6?

    现在 MATLAB 2012a 中的 mex 仅正式支持 gcc 4 4 6 但我想使用 gcc 4 7 风险自负 现在如果我直接用 mex 编译一些东西 它会抱怨 usr lib gcc i686 linux gnu 4 7 cc1plu
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • matlab中的正则逻辑回归代码

    我正在尝试正则化 LR 在 matlab 中使用以下公式很简单 成本函数 J theta 1 m sum y i log h x i 1 y i log 1 h x i lambda 2 m sum theta j 梯度 J theta t
  • 检测植物图片中的所有分支

    我想知道有什么可以检测下图中的所有绿色树枝 目前我开始应用 Frangi 过滤器 options struct FrangiScaleRange 5 5 FrangiScaleRatio 1 FrangiBetaOne 1 FrangiBe
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • 如何在 MATLAB 中绘制 3D 曲面图?

    我有一个像这样的数据集 0 1 0 2 0 3 0 4 1 10 11 12 13 2 11 12 13 14 3 12 13 14 15 4 13 14 15 16 我想在 matlab 中绘制 3D 曲面图 使列标题位于 y 轴 行标题
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得
  • 了解 fminunc 参数和匿名函数、函数处理程序

    请多多包涵 问题在最后 我试图找出 fminunc 调用方式的差异 这个问题源于 Andrew Ng 在他的 Coursera 机器学习课程中的第 3 周材料 我正在回答这个问题 Matlab Andrew Ng 机器学习课程中 t cos
  • 图像处理 - 使用 opencv 进行服装分割

    我正在使用 opencv 进行服装特征识别 第一步 我需要通过从图像中移除脸部和手来分割 T 恤 任何建议表示赞赏 我建议采用以下方法 Use 阿德里安 罗斯布鲁克的用于检测皮肤的皮肤检测算法 谢谢罗莎 格隆奇以获得他的评论 在方差图上使用
  • ROC曲线和libsvm

    给定一条 ROC 曲线plotroc m see here http www csie ntu edu tw cjlin libsvmtools roc curve for binary svm 理论问题 如何选择要使用的最佳阈值 编程问题
  • Matlab 的 imresize 函数中用于插值的算法是什么?

    我正在使用 Matlab Octaveimresize 对给定的二维数组重新采样的函数 我想了解如何使用特定的插值算法imresize works 我在Windows上使用八度 e g A 1 2 3 4 是一个二维数组 然后我使用命令 b
  • 正确使用 fft2 和 fftshift 进行着色形状

    我正在尝试从 Trucco Verri 文本 3d 计算机视觉入门技术 中看到的着色算法重新创建经典形状 但我很难理解 matlab 中的 fft 函数 本质上 我需要使用可积性约束来获取图像的深度 Z 我不确定在这种情况下何时使用 fft
  • 快速有效地计算已知特征值的特征向量

    我的问题的简短版本 计算矩阵特征向量的最佳方法是什么A 如果我们已经知道属于特征向量的特征值呢 更长的解释 我有一个很大的随机矩阵A由于它是随机的 因此具有非负左特征向量x 这样A Tx x 我正在寻找快速有效的方法来数值计算这个向量 最好

随机推荐

  • 【Transformer系列】深入浅出理解Tokenization分词技术

    一 参考资料 NLP技术中的Tokenization是什么 核心任务是什么 二 Tokenization相关介绍 1 Tokenization的概念 NLP技术中Tokenization被称作是 word segmentation 直译为分
  • 深入理解工具链-自己搭建STM32编程IDE

    目录 一 前言 二 编译器组成与编译流程 2 1 编译流程概述 2 2 Gcc For Arm编译器 2 3 预编译 2 4 编译 2 5 汇编 2 6 链接 2 7 生成HEX镜像 2 8 通过Makefile编译代码 三 调试流程 3
  • 解决在使用 Ant Design Vue组件库更改Modal对话框样式使用深度作用选择符不生效的问题

    项目场景 在使用 Ant Design Vue组件库更改Modal对话框样式使用深度作用选择符不生效 问题描述 Modal对话框官方样式如下图 现在要修改为下图所示样式 使用深度作用选择符样式没有生效 原因分析 因为modal是直接插入到b
  • 【SQL】10 SQL UPDATE 语句

    UPDATE 语句用于更新表中的记录 SQL UPDATE 语句 UPDATE 语句用于更新表中已存在的记录 SQL UPDATE 语法 UPDATE table name SET column1 value1 column2 value2
  • Flink消费kafka出现空指针异常

    文章目录 出现场景 表现 问题 解决 tombstone Kafka中提供了一个墓碑消息 tombstone 的概念 如果一条消息的key不为null 但是其value为null 那么此消息就是墓碑消息 出现场景 双流join时 采用的是l
  • 此av非彼"AV"

    作者 王亨 R语言中文社区专栏作者 跟着菜鸟一起一步步学习R语言 争做R语言高手 个人公众号 跟着菜鸟一起学R语言 微信ID learn R 最近发现一个特别有意思的包 av 为什么有意思 首先名字有意思吧 其次这个包可以捕获图像 添加背景
  • 华为OD机试真题(Java),最小步骤数(100%通过+复盘思路)

    一 题目描述 一个正整数数组 设为nums 最大为100个成员 求从第一个成员开始正好走到数组最后一个成员所使用的最小步骤数 要求 第一步 必须从第一元素起 且 1 lt 第一步步长
  • Java企业微信开发_01_接收消息服务器配置

    一 准备阶段 需要准备事项 1 一个能在公网上访问的项目 见 Java微信公众平台开发01本地服务器映射外网 http www cnblogs com shirui p 7308856 html 2 一个企业微信账号 去注册 https w
  • 链式存储结构-----栈

    链式存储结构实现栈 上一节我们说了关于线性表的链式存储结构的实现 今天的栈也是建立在线性表的基础上 栈的特性 先进后出 1 删除时 出栈 我们考虑时间复杂度时发现 删除时的头删的复杂度为O 1 而尾删的时间复杂度为O n 故而我们出栈选择从
  • 【操作系统】键盘敲入字母时,操作系统期间发生了什么?

    操作系统 键盘敲入字母时 操作系统期间发生了什么 参考资料 键盘敲入 A 字母时 操作系统期间发生了什么 操作系统 浅谈 Linux 中的中断机制 文章目录 操作系统 键盘敲入字母时 操作系统期间发生了什么 设备控制器 I O 控制方式 设
  • html 自定义简单的时间轴 timeline 并与 table 图表和 echarts 进度甘特图联动

    1 需求 最近有需求需要实现 table 图表与 eharts 柱状图的联动 完整的效果图如下所示 这里时间轴要实现的效果要基本如下图所示 该时间轴并不是要实现选中单独的某一个月份并查看单月的数据 而是要将当前数据的时间跨度控制在时间轴的跨
  • uniapp 电商app支付倒计时处理

    电商app支付倒计时 所有电商app支付页面都是有倒计时的 一来可以促进消费 二来可以减少恶意减库存的问题发生 因为创建订单的时候 除了预售的商品外 实际销售的商品是需要减库存的 一般的电商app倒计时都是30分钟或者45分钟的 如果在此页
  • 带调速功能的arduino摇头避障小车

    一 材料同上篇文章 二 接线同上篇文章 L298N红板有两个使能端口ENA和ENB 这两个端口默认是有跳线帽的 也就是接5V的 此时输出就是HIGH或者LOW 摘掉跳线帽 将外边端口分别接arduino的PWM接口就好 本文接的是3和11
  • 3.[人脸识别] python-opencv 人脸特征采集与录入

    目录 1 环境 2 描述 3 代码 4 效果 1 环境 1 python 3 6 6 64bit 2 python packages 1 opencv python 3 4 1 15 2 opencv contrib python 4 4
  • 李沐动手学深度学习V2-微调练习

    1 继续提高finetune net的学习率 模型的准确性如何变化 原实验参数 lr 5e 5 batch size 128 num epochs 5 lr 5e 4 lr 5e 6 2 2 在比较实验中进一步调整finetune net和
  • 2018.5.21 . XMLSpy激活的方法

    127 0 0 1 altova com XMLspy 127 0 0 1 www altova com XMLspy 127 0 0 1 link altova com XMLspy 追加加到 C WINDOWS system32 dri
  • Python爬虫

    一 什么是代理 二 代理服务器的作用 可以进行请求的响应和转发 三 在爬虫中为何要使用代理 如果我们使用爬虫对一个网站在一段时间内发起一个高频请求 该网站会检测出这个异常的现象 并将异常的请求 IP 获取 将 IP 加入到黑名单 然后改 I
  • [无线通信基础-14]:图解移动通信技术与应用发展-2-第一代移动模拟通信大哥大

    前言 第一代移动通信主要采用的是模拟通信技术和频分多址 FDMA 技术 模拟通信 analog communication 是利用正弦波的幅度 频率或相位的变化 或者利用脉冲的幅度 宽度或位置变化来模拟原始信号 以达到通信的目的 故称为模拟
  • PyTorch中的符号索引和函数索引用法

    Pytorch中很多函数都采用的是函数式索引的思路 而且使用函数式索引对代码可读性会有很大提升 张量的符号索引 张量也是有序序列 我们可以根据每个元素在系统内的顺序位置 来找出特定的元素 也就是索引 一维张量的索引 一维张量索引与Pytho
  • 基于MATLAB的二进制数字调制与解调信号的仿真——2ASK

    实现二进制数字调制与解调信号的仿真是我的MATLAB课程设计的一部分 我参考了网上的一些资料 并加入了一些自己的想法 代码已在本地MATLAB编译通过且能正常运行 2ASK 二进制振幅键控 i 10 10个码元 j 5000 t linsp