我需要邏輯向量轉換爲字符串..所以我可以採取邏輯矢量中的每個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'
我需要邏輯向量轉換爲字符串..所以我可以採取邏輯矢量中的每個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'
您可以使用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) - 你需要編寫一些代碼來處理在做什麼這個案例。
幫助文檔:
除了@ 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))
非常感謝你 – 2012-03-05 02:03:38