Matlab错误:下标的分配维度不匹配

时间:2019-01-16 15:48:47

标签: matlab function

我正在尝试将十进制数字转换为二进制。它适用于常规十进制数字。但是,当我输入(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

1 个答案:

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