如何将文件中的字符(例如“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
如何将文件中的字符(例如“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
首先,将您的输入转换为二进制表示:
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