我是靠谱客的博主 愤怒太阳,最近开发中收集的这篇文章主要介绍基于matlab的字符串转换二进制码流(通信仿真)前言结语,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

在进行数据通信前,我们通常会把所需的信息类型(如:字符串等)转化成为二进制码流以方便进行数据的串行传送,我们在通信的仿真中,常使用Matlab软件进行通信原理的仿真,下面介绍以matlab语言为基础的数据类型转换。

1 进制向量转换:de2bi函数

在Matlab函数中,de2bi函数是把十进制非负正整数转换成二进制的向量

de2bi函数的使用示例:

示例代码
对应输出为:
在这里插入图片描述
矩阵E是一个列向量,我们知道 (12)dec=(1100)bin,(5)dec=(101)bin
所以如果要将数据转换成二进制码流,应该使用de2bi(…,‘left-msb’)字段来控制码流的方向

2 简单实现之int8函数

下面我们来尝试对字符串类型进行试验:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述其中Ebin是6*7的二进制矩阵

因此,我们可以使用de2bi函数将ASCII字符串转换成为二进制向量,
如下matlab函数是用以字(8位)为单位,将字符串msgStr合并成为一串二进制码流msg_bits

    function msg_bits = str_to_bits(msgStr)
    
    msgBin = de2bi(int8(msgStr),8,'left-msb');
    len = size(msgBin,1).*size(msgBin,2);
    msg_bits = reshape(double(msgBin).',len,1).';
    
    end  

此方法虽然简单,但由于使用的是ASCII的编码方式,可用字符数少,无法转换中文字符串,因此我们考虑使用其他编码方式来对中文字符串进行编码。

2 进阶实现之unicode2native

下面我们使用unicode2native函数进行试验:
在这里插入图片描述
我们可以看到,后三位的编码与int8编码的’def’一样,但却可以对中文进行编码,这正是unicode的优点,极大地扩展了字符的范围,且保持了ASCII的字符编码。

因此,我们可以使用de2bi函数将Unicode字符串转换成为二进制码流,
matlab程序如下

    function msg_bits = str_to_bits(msgStr)
    
    native=unicode2native(msgStr);			%转成本地编码
    msgBin=de2bi(native,8,'left-msb');		%字节转成8bit
    len = size(msgBin,1).*size(msgBin,2);
    msg_bits = reshape(double(msgBin).',len,1).';
    
    end  

结语

本文到此结束,有问题欢迎指正,希望对你们有所帮助。

本文所给的字符串转二进制码流函数及其解码还原,已经打包,有积分的可以支持一下(自己写也不难)

字符串转二进制码流及解码matlab代码.zip
https://download.csdn.net/download/u012579502/11358236

最后

以上就是愤怒太阳为你收集整理的基于matlab的字符串转换二进制码流(通信仿真)前言结语的全部内容,希望文章能够帮你解决基于matlab的字符串转换二进制码流(通信仿真)前言结语所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部