matlab中二进制数运算规则,Matlab下二进制运算

  • Post author:
  • Post category:其他


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