歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

Copyright © Linux教程網 All Rights Reserved