我需要将逻辑向量转换为字符串..所以我可以将逻辑向量的每个8位转换为它的字符串...
A=0 1 1 1 0 1 1 0 1 1 0 0 0 0 1 ;
A is of type logical
我需要将其转换为字符串,因此A将等于'va'
答案 0 :(得分: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个) - 您需要编写一些代码处理在这种情况下该怎么做。
有用的文档:
答案 1 :(得分:0)
除了@ mathematical.coffee的答案之外,您可以简单地将48(即字符'0'的代码)添加到A来获取字符串,而不是SPRINTF:
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) )