概述
前言
在进行数据通信前,我们通常会把所需的信息类型(如:字符串等)转化成为二进制码流以方便进行数据的串行传送,我们在通信的仿真中,常使用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的字符串转换二进制码流(通信仿真)前言结语所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复