我正在尝试将十进制数字转换为二进制。它适用于常规十进制数字。但是,当我输入(25.10)时,出现下标错误。
我的下面的代码。
function [binary] = decimal2binary(decimal)
% floor : rounds towards minus infinity
% rem : remainder after division
% num2str : converts numbers to strings
% fliplr : flips string bits to get correct order
i = 1.0;
q = floor(decimal/2);
r = rem(decimal, 2);
% THIS IS WHERE THE ERROR OCCURS binary(i) = num2str(r(i));
while 2 <= q
decimal = q;
i = i+1;
q = floor(decimal/2);
r = rem(decimal, 2);
binary(i) = num2str(r);
end
binary(i + 1) = num2str(q);
binary = fliplr(binary);
end
答案 0 :(得分:2)
假设出现错误的行确实是:
binary(i) = num2str(r(i));
然后,当使用参数25.10调用函数时,在到达此行之前,我们已经:
i=1
r=1.10000
num2str(r(i)) = '1.1'
这就是归因的原因
binary(i) = num2str(r(i));
不起作用。在Matlab中,binary(1)是1x1的char数组。您正在尝试为其适应1x3字符数组('1.1')。