2012-03-05 75 views
1

我需要邏輯向量轉換爲字符串..所以我可以採取邏輯矢量中的每個8位並把它轉換到它的equevilant炭..轉換邏輯串

A=0 1 1 1 0 1 1 0 1 1 0 0 0 0 1 ; 
A is of type logical 

我需要將它轉換到一個字符串,所以A將等於'va'

回答

2

您可以使用char將數字轉換爲字符。

A每8個元素轉換成一個數字,有幾個方法:

% using definition of binary 
n = sum(A(1:8).*2.^[7:-1:0]) 
% using 'base2dec' 
n = base2dec(sprintf('%i',A(1:8)),2) 

然後使用char(n)獲得的性格。

要將此應用於A的每8個元素,您可以使用循環或諸如arrayfun之類的東西。

arrayfun(@(i) char(base2dec(sprintf('%i',A(i:(i+7))),2)), 
      1:8:length(A)) 

注意A你在你原來的問題給了只有15元,所以你不能真正組,每8(需16) - 你需要編寫一些代碼來處理在做什麼這個案例。

幫助文檔:

+0

非常感謝你 – 2012-03-05 02:03:38

0

除了@ mathematical.coffee答案,而不是你的sprintf可以簡單地添加48(這是代碼字符'0')到A得到字符串:

Astr = char(A + 48); 

Astr = char(A + int8('0')); 

您還可以使用BIN2DEC而不是BASE2DEC。

所以,你可以用它作爲ARRAYFUN

arrayfun(@(i) char(bin2dec(char(A(i:(i+7))+48))),1:7:length(A))