1

如何将文件中的字符(例如“hello”)转换为二进制矩阵,如下所示:

[1  1   0  1  1  0  0 0  1 0 .......]

其中矩阵的每一列只有一个 1 位值,即 0 或 1。

到目前为止,我所做的只是将字符串转换为二进制矩阵,其中每列有 7 位二进制。

示例:“你好”

1 1 0 1 1 0 0 0 1 0

4

1 回答 1

1

您需要dec2bin和的组合str2num

首先,将您的输入转换为二进制表示:

WORD = 'hello'; 

WORD_BINARY = dec2bin(WORD,7) % The 7 gives the number of bits

这导致:

WORD_BINARY =

1101000
1100101
1101100
1101100
1101111

这是一个字符串,现在必须将其转换为向量:

for i=1:size(WORD_BINARY,1)
    for j=1:size(WORD_BINARY,2)
        WORD_OUTPUT(1,(i-1)*size(WORD_BINARY,2)+j) = str2num(WORD_BINARY(i,j))
    end
end

WORD_OUTPUT在这种情况下是一个<1x40>向量,从:

WORD_OUTPUT = 

[ 1     1     0     1     0     ...  

编辑

如果您不想要两个for循环,则可以reshape先使用(但请注意,按列而不是按行重塑订单):

WORD = 'hello'; 

WORD_BINARY = reshape(dec2bin(WORD,7)',1,[]);
% note the <'> after the dec2bin, to transpose the matrix

for j=1:size(WORD_BINARY,2)
    WORD_OUTPUT(1,j) = str2num(WORD_BINARY(1,j));
end
于 2013-05-17T15:09:35.697 回答