convert string to bits and then convert bits back to strings ....
10 次查看(过去 30 天)
显示 更早的评论
facing problem with this code..
word='hello';
wordBinary = reshape(dec2bin(word,7)',1,[]);
% note the <'> after the dec2bin, to transpose the matrix
for j=1:size(wordBinary,2)
wordOutput(1,j) = str2double(wordBinary(1,j));
end
disp(wordOutput);
for j=1:size(wordOutput,2)
s(1,j) = num2str(wordOutput(1,j));
end
t = reshape(s, length(s)/7, 7);
decimalValues = bin2dec(t);
y=char(decimalValues);
disp(y);
output is coming wrong.. please help. o/p is:J U - { please help me in this..
1 个评论
回答(2 个)
Joseph Cheng
2015-5-1
编辑:Joseph Cheng
2015-5-1
the issue is with your
t =reshape(s,length(s)/7,7);
it should read
t = reshape(s,length(s)/length(word),length(word));
decimalValues = bin2dec(t');
if you look at your original reshape you can see that it is basically transposed. This is because reshape does not fill in rows first then columns. Reshape takes the array and starts filling in the reshaped matrix starting from column 1 then moves to column 2 and so on.
this short example shows what is happening
x = [1 2 3 4 5 6 7 8 9 10 11 12]
reshape(x,3,4)
2 个评论
Joseph Cheng
2015-5-7
really i would say you don't understand what is happening and you should step through it step by step looking at each line in debug mode. since
word='hello';
wordBinary = reshape(dec2bin(word,7)',1,[]);
% note the <'> after the dec2bin, to transpose the matrix
for j=1:size(wordBinary,2)
wordOutput(1,j) = str2double(wordBinary(1,j));
end
disp(wordOutput);
for j=1:size(wordOutput,2)
s(1,j) = num2str(wordOutput(1,j));
end
t = reshape(s,length(s)/length(word),length(word));
decimalValues = bin2dec(t');
y=char(decimalValues);
disp(y');
works just fine
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!