将逻辑转换为字符串

时间:2012-03-05 00:44:56

标签: matlab

我需要将逻辑向量转换为字符串..所以我可以将逻辑向量的每个8位转换为它的字符串...

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

我需要将其转换为字符串,因此A将等于'va'

2 个答案:

答案 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) )