Ошибка Matlab: несоответствие заданного размера назначения - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь преобразовать десятичное число в двоичное. Это работает для обычных десятичных чисел. Однако, когда я ввожу (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 голосов
/ 17 января 2019

Предполагается, что строка с ошибкой действительно:

binary(i) = num2str(r(i));

Тогда при вызове функции с аргументом 25.10 до достижения этой строки имеем:

i=1
r=1.10000
num2str(r(i)) = '1.1'

Вот почему атрибуция

 binary(i) = num2str(r(i));

не работает. В Matlab двоичный код (1) представляет собой массив символов 1x1. Вы пытаетесь вписать в него массив символов 1x3 ('1.1').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...