时域脉冲通信采用高斯脉冲且使用PAM调制的Matlab简易演示仿真

news2024/11/24 10:00:10

时域脉冲通信采用高斯脉冲且使用PAM调制的Matlab简易演示仿真

环境

matlab 2016a

指标

1 将声音信号转为二进制码
2 PAM调制
3 采用高斯脉冲

流程

在这里插入图片描述

代码

[OriginVoice,fs]=audioread('voice.m4a') ; 
OriginVoice=OriginVoice(:,2);
N=length(OriginVoice); % 计算信号x的长度
t=0:1/fs:(N-1)/fs; % 计算时间范围,样本数除以采样频率
OriginVoice=OriginVoice';
% 
% % sound(y,fs);
figure(1);
plot(t,OriginVoice)
OriginVoice_max=max(OriginVoice);
OriginVoice1=OriginVoice+OriginVoice_max;
OriginVoice1=OriginVoice1*100000;
OriginVoiceBit= dec2bin(OriginVoice1);		%将十进制数据转为字符
AA1 = boolean(OriginVoiceBit-'0');	%将字符转成逻辑量
AA1 = double(AA1);			%强制转为double型
AA = AA1.';
AA = AA(:);
OriginVoiceBitSend = AA.';



t=-5:0.1:5;
Lenth_t=length(t);
tao=1;
t0=0;

Info=OriginVoiceBitSend;
InfoBitNum=length(OriginVoiceBitSend);
MSign=zeros(InfoBitNum,Lenth_t);
% y0=zeros(Lenth_t,1);
y0=(-0.5).*(t.^2-tao.^2).*exp(-1.*((t-t0)/tao).^2)./(((2*pi).^(1/2)).*(tao.^5));
%%%一阶高斯脉冲ppt
%y=(t-t0).*exp(-4*pi.*((t-t0).^2)/(tao.*tao))./tao; 
%%%二阶高斯脉冲book
%y=(-t).*exp(-1.*((t-t0)/tao).^2)./(((2*pi).^(1/2)).*(tao.^3));
%%%二阶高斯脉冲
y=(-1).*(t.^2-tao.^2).*exp(-1.*((t-t0)/tao).^2)./(((2*pi).^(1/2)).*(tao.^5));
% plot(t,y)
% grid on
% axis([-10,10,-0.5,0.5])
% xlabel('t')
% ylabel('y')


for i=1:InfoBitNum
    if Info(i)==1
        MSign(i,:)=repmat(y,1);
    else 
        MSign(i,:)=repmat(y0,1);
    end
end

MSignDisplay=MSign.';
MSignDisplay=MSignDisplay(:);
MSignDisplay=MSignDisplay.';
SendSignal=MSignDisplay;
SendSignal=awgn(SendSignal,20,'measured');

MSignDisplay=MSignDisplay(1:101*16*2);

MSignDisplay = awgn(MSignDisplay,20,'measured');

tDisplay=linspace(0,100*16*2,Lenth_t*16*2);
figure(2);
plot(tDisplay,MSignDisplay)
grid on
axis([-1,100*16*2,-0.5,0.5])
xlabel('t')
ylabel('MSign1')

%%解调
sumsign=zeros((length(SendSignal)/101),1);
verdict=zeros((length(SendSignal)/101),1);
for i=1:(length(SendSignal)/101-1)
    muli=(SendSignal((i-1)*101+1:(i-1)*101+101)).*y;
    sumsign(i,:)=trapz(muli,t);
    if sumsign(i)<=-0.1
        verdict(i)=1;
    else 
        verdict(i)=0;
    end
end

verdict=verdict';
RcvInfoBit=verdict;
RcvInfoBitNum=length(RcvInfoBit);
RcvVoice=zeros(RcvInfoBitNum/16,1);
for i=1:(RcvInfoBitNum/16-1)
    TempChar=mat2str(RcvInfoBit((i-1)*16+1:(i-1)*16+17));
    TempChar=TempChar(2:32);
    TempNum=bin2dec(TempChar);
    TempNum=double(TempNum);
    TempNum=TempNum/100000;
    TempNum=TempNum-0.3124;
    RcvVoice(i)=TempNum;
end
RcvVoice=RcvVoice';


RcvN=length(RcvVoice); % 计算信号x的长度
t=0:1/fs:(RcvN-1)/fs; % 计算时间范围,样本数除以采样频率
sound(RcvVoice,fs);
figure(3);
plot(t,RcvVoice);

结果

信道信噪20dB的传输情况

原声音信号

在这里插入图片描述

部分调制信号

在这里插入图片描述

接收到的信号

在这里插入图片描述

信噪比在10dB信号的传输

在这里插入图片描述

信噪比在10dB信号的传输在这里插入图片描述

可以看到当信噪比下降到5dB时,声音信号出现失真,但大部分信号仍能传输。

拓展

1 可以随着信噪比的下降对比误码率的趋势
2 增加更多的影响影响因素

说明

1 信道采用高斯白噪声
2 解调采用相关解调,模板相乘再求和,最后再判决
3 通过更改y0函数来改变调制方式
4 本仿真只是简单的演示仿真,工程还有更多复杂的结构,更多的影响因素,仅供参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/157563.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法训练营 day15 二叉树 层序遍历 翻转二叉树 对称二叉树

算法训练营 day15 二叉树 层序遍历 翻转二叉树 对称二叉树 层序遍历 102. 二叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。…

标签设计打印软件:LabelJoy 6.23.0 Crack

LabelJoy 专业条码软件 生成25种条形码 从数据源导入条码 计算自动校验 商业条形码标签软件 兼容 Excel、Access、MySQL、Oracle 11.000 个预装的纸张布局 支持任何打印机 通过 3 个步骤创建和打印标签&#xff1a; 选择布局 创建您的标签 开始打印 最好的标签打印软件&#xf…

kafka-1

文章目录1.启动2.创建主题3.发送消息4.消费消息5.使用kafka connect将现有的数据导入到kafka中6.使用kafka streams处理kafka中的events6.终止服务集群配置要点创建主题要点主题分区变更主题副本可变更吗&#xff1f;创建生产者要点> tar -xzf kafka_2.12-3.3.1.tgz1.启动 …

Mac生成和查看ssh key

从 git 上拉取或者提交代码每次都需要输入账号密码&#xff0c;这样很麻烦。我们可以在电脑上生成一个 ssh key&#xff0c;然后把ssh key添加到 git 中&#xff0c;就可以不用每次去输账号密码了。下面就介绍一下怎么在自己的 Mac 中生成和查看 ssh key。一、Mac生成SSH Key打…

【环境】idea远程debug

工作中&#xff0c;遇到问题的时候&#xff0c;想知道上下文中对应的参数值是什么&#xff1f;这时候&#xff0c;1、我们可以全靠逻辑分析。费脑&#xff0c;不一定对。2、打印日志&#xff0c;打印的信息不一定全&#xff0c;换包&#xff0c;麻烦3、远程debug。 1、配置ide…

pytorch二维码识别

二维码图片的生成 利用captcha可以生成二维码图片 # -*- coding: UTF-8 -*- from captcha.image import ImageCaptcha # pip install captcha from PIL import Image import random import time import os # 验证码中的字符 # string.digits string.ascii_uppercase NUMBER…

整理了一周近万字讲解linux基础开发工具vim,gdb,gcc,yum等的使用

文章目录 前言一、yum的使用二、vim的使用三 . gcc/g的使用四 . gdb的使用总结前言 想用linux开发一些软件等必须要会的几种开发工具是必不可少的&#xff0c;在yum vim gcc gdb中指令繁杂的是vim和gdb这两个工具&#xff0c;至于yum和gcc的指令就比较简单了。 一、yum的使用…

【SpringMVC】拦截器

目录 一、概念 二、自定义拦截器的三个实现方法 三、自定义拦截器执行流程 四、使用 五、拦截器和过滤器 相关文章&#xff08;可以关注我的SpringMVC专栏&#xff09; SpingMVC专栏SpingMVC专栏一、概念在学习拦截器之前&#xff0c;我们得先了解一下它是个什么❓ SpringMVC…

SAP ABAP调用标准事务码

这里介绍常见的几种在开发中常用到的事务代码跳转功能。 1、最常用到的是“SET PARAMETER”语句赋值&#xff0c;然后再使用“CALL TRANSACTION”语句跳转屏幕。 比如采购订单、销售订单、交货单、采购发票、销售发票等事务代码&#xff0c;均可以利用给参数赋值来直接跳转&am…

零售及仓储数字化整理解决方案

价格管控 皮克价格管控方案可实现门店与企业信息管理平台的数据同步&#xff0c;强化零售企业对终端的控制。同时为企业销售决策提供支持&#xff0c;优化门店经营活动的效率和频率。陈列管理 皮克陈列管理方案通过电子价签产品使商品陈列得到固化。 同时实现了陈列可视化&am…

ArcGIS水文分析提取河网及流域

在进行某些研究或者一些论文插图显示的时候&#xff0c;有时我们会碰到在部分资料中找不到一些小的河流或者流域的数据的情况&#xff0c;这里讲述通过DEM数据生成河网及流域。 一、数据来源 四川省高程数据来源于中国科学院资源环境科学与数据中心&#xff08;中国科学院资源环…

Vue3学习之深度剖析CSS Modules和Scope

Css Modules 是通过对标签类名进行加装成一个独一无二的类名&#xff0c;比如.class 转换成.class_abc_123,类似于symbol&#xff0c;独一无二的键名 Css Scope 是通过为元素增加一个自定义属性&#xff0c;这个属性加上独一无二的编号&#xff0c;而实现作用域隔离。 原理 …

爬虫必备抓包工具——Fiddler【认识使用】

目录&#xff1a;1.fiddler &#xff08;抓包工具&#xff09;1.1 引入&#xff1a;HTTP/https代理&#xff08;正向代理&#xff09;1.2 拓展&#xff1a;反向代理&#xff1a;1.2 初识Fiddler①什么是抓包&#xff1f;抓包有什么用&#xff1f;②浅谈fiddler&#xff1a;③fi…

Unity_Skybox自定义插件可实现日夜更替Polyverse Skies | Low Poly

又又一个天空盒,不过这个做的还是比较完善的。。。不会出现买家秀和买家秀差别大问题 此Skybox插件特色提供: 可扩展,自定义很多的Skybox Shader预制体几个,虽然都是夜晚样式(缺白天)若干预设值</

对NIO和BIO的进一步理解

疑问 在之前的学习中&#xff0c;只提到BIO是阻塞IO&#xff0c;在建立连接和读写事件时会阻塞线程。NIO是非阻塞IO&#xff0c;基于事件注册&#xff0c;通过Selector进行切换Channel&#xff0c;不会阻塞线程。对于这种解释&#xff0c;还是带有一些疑问的。Selector进行Cha…

#define 实现快捷模板类实例在eigen::Maxtrix中的应用

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 背景 在eigen库中&#xff0c;矩阵类原来的用法是 Matrix<Type, row, col>。 为了方便用户&#xff0c;库中还提供了用户常用的快捷类型&#xff0c;比如Matrix…

Java-String的API

一、length()package 做题; import java.lang.reflect.Array; import java.security.PublicKey; import java.util.Arrays; import java.util.Scanner;import javax.naming.StringRefAddr;public class Main {public static void main(String[] args) {Scanner sc new Scanne…

ZeroTierr的moon云服务器搭建和使用

搭建moon 问题是ZeroTier One本身的服务器都在国外访问速度很慢。可以通过搭建国内Moon服务加速解决连接慢的问题。 1、 进入云服务器在线安装zerotier curl -s https://install.zerotier.com/ | sudo bash查看安装zerotier版本 sudo zerotier-cli status安装完成后生成moon…

从0到1完成一个Vue后台管理项目(二十二、列表拖拽排序SortableJS)

往期 从0到1完成一个Vue后台管理项目&#xff08;一、创建项目&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;二、使用element-ui&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;三、使用SCSS/LESS&#xff0c;安装图标库&#xff09; 从0到1完成一个Vu…

Python WebGL 3D应用开发快速入门

在本文中&#xff0c;我们将学习如何在Python中使用three.js库&#xff0c;而无需编写任何一行 JavaScript。我们将使用PyWeb3D&#xff0c;这是一个额外的层&#xff0c;旨在与Brython的three.js轻松交互。 1、什么是PyWeb3D&#xff1f; 简单地说&#xff0c;PyWeb3D是一个…