Matlab 二进制类型数据相关操作
Matlab逻辑运算
&: 逻辑与 A&B
返回值:当A、B中元素均为非零元素是,返回1,否则,为0,还可表示成and(a,b);
| :逻辑或 A|B。还可以表示成or(A,B).
~ : 逻辑非 ~A。还可以表示成not(A).
xor:逻辑异或 xor(A,B).
//////////////////////////////////////////
unit
uint8([])
uint16([])
uint64([])
dec2bin(一个十进制数):将十进制数转化为二进制
dec2hex(一个十进制数):将十进制数转化为十六进制数
hex2dec十六进制转换为十进制
hex2num十六进制转换为浮点数
%%%%%%%%%%%% bin2dec二进制转化为十进制。 注意:输入应该为String类型的数
eg:
bin2dec(\'01011100\')
ans = 92
>> bin2dec(\'1001\')
ans = 9
%%%%%%%%%%%%% bits= randn(1,bitnumbers)<0.5 : 产生bitnumbers位的伪随机二进制序列(PRBS)
bits = randn(1,8)<0.5
bits = 1 0 0 1 1 0 1 0
%%%%%%%%%%%% 用matlab实现小数转二进制
注:5是wordlength字长,3(4)是fractionlength小数长度。
如果不是0.xxxx,必须要给整数位留两个bit,因为含有符号位在里面。
一:
q = quantizer([5 3]);
num2bin(q, -1.78)
ans =10001
二:
q = quantizer([5 3]);
num2bin(q, 1.78)
ans =01110
三:
q = quantizer([5 4]);
num2bin(q, 0.78)
ans =01100
还可以用Matlab自带的定点工具,fixed-point tool。用法如下:fi(v,s,w,fa fixed-point object with value v, signedness s, word length w, and fraction length f. 用的时候可以令:a=fi(v,s,w,f),要调用值的时候用a.data或者a.bin...这些就行了。
eg:
一:
a = fi(-1.78,-1.78,5,3);
>> a.data
ans = -1.7500
>> a.bin
ans = 10010
二:
a = fi(1.78,1.78,5,3);
>> a.data
ans = 1.7500
>> a.bin
ans = 01110
三:
a = fi(0.78,0.78,5,4);
>> a.bin
ans = 01100
>> a.data
ans = 0.7500
附:字符串操作(String operations)
base2dec X-进制串转换为十进制整数
bin2dec 二进制串转换为十进制整数
dec2base 十进制整数转换为X 进制串
dec2bin 十进制整数转换为二进制串
dec2hex 十进制整数转换为16 进制串
findstr 在一个串中寻找一个子串
hex2dec 16-进制串转换为十进制整数
hex2num 16-进制串转换为浮点数
int2str 将整数转换为字符串
lower 把字符串变成小写
mat2str 将数组转换为字符串
num2str 把数值转换为字符串
strcat 把多个串连接成长串
strcmp 比较字符串
strcmpi 比较字符串(忽略大小写)
strings MATLAB 中的字符串
strjust 字符串的对齐方式
strmatch 逐行搜索串
strnomp 比较字符串的前N 个字符
strncmpi 比较字符串的前N 个字符(忽略大小写)
strrep 用另一个串代替一个串中的子串
strtok 删除串中的指定子串
strvcat 创建字符串数组
str2mat 将字符串转换为含有空格的数组
str2num 将字符串转换为数值
upper 把字符串变成大写
二进制数转十进制:bin2dec
>>a = bin2dec(\'11111111\')
a = 255
再转为十六进制数:dec2hex
>> b = dec2hex(a)
b = FF (Char类型)
反过来:hex2dec; dec2bin (得到char类型数据)
%%%%%%%%%%%%%%%%%%%%%%%%
bitand(,)操作输入必须为数字的或者逻辑型的
因此,经过dec2bin得到的数据不能直接作为输入
>>a = dec2bin(54) %将54转换为二进制表示
a =110110
>>c(a == \'1\') = 1; % 将char型的转换为数字型的
>> c(a == \'0\') = 0;>>aa = \'011011\'
aa =011011
>> dd(aa == \'0\') = 0;
>> dd(aa == \'1\') = 1;
>> t = bitand(c,dd) %按位与操作
t = 0 1 0 0 1 0>> tt(t==1) = \'1\' % 再将得到的数字型结果转换为char型的
>> tt(t == 0) = \'0\'
tt = 010010
%%%%%%%%%%%%%%%%%
字符串连接
一、
>>a = \'matlab\';
>> b = \'set\';
>>strcat(a,char(127),b)ans =matlab set
>>strcat(a,char(313),b)
ans =matlab set
二、
>>a = \'matlab\';
>>strcat(a,\'set\') %a是字符串ans =matlabset
>> b = 100;
>> strcat(num2str(b),\'set\') % b是数字ans =100set
三、
>> a= \'matlab\';
>> b = \'set\';
>> c = [a,b]c =matlabset
%%%%%%%%%%%%%%%%%%
取元素
>>length(c)
ans = 9
>> c(1:5)ans =matla
>> c(5:9)
ans =abset
请发表评论