Как избежать того, чтобы Matlab конвертировал двойные числа в целые, помещая эти двойные числа в вектор? - PullRequest
0 голосов
/ 31 мая 2019

Привет, я пытаюсь поместить двойные значения в вектор, но когда я отображаю этот вектор, я вижу, что двойные значения, которые я помещаю внутрь, преобразуются в целые числа. Как я могу избежать этого?

Я проверил значения тета, и они соответствуют ожиданиям (т. Е. 1.802, 1.688), но в матрице x все значения равны 1.

SerialPort = 'COM23';
s = serial(SerialPort, 'BaudRate', 115200);
fopen(s);

n = 1;


while n<200
    dis = fscanf(s,'d',2);
    ang = fscanf(s,'d',3);
    intDis = str2double(dis);
    intAng = str2double(ang);
    teta = pi/6 +(intAng-100)*pi/300;
    x(n) = teta
    y(n) = intDis;

    n = n+1;
end


%polar(x,y)
fclose(s);
delete(s);
clear s;

1 Ответ

0 голосов
/ 31 мая 2019

Это может произойти только в том случае, если x был объявлен как целое число (или, может быть, логично?) Перед запуском скрипта. Вы всегда должны инициализировать все переменные, всегда, чтобы избежать непредвиденных ошибок: добавьте x=[]; в ваш скрипт перед циклом.

Но ваш цикл выполняется ровно 200 итераций, поэтому вы знаете, что размер x будет в конце. Вы можете предварительно выделить:

x = zeros(200,1);

Я также рекомендую вам посмотреть синтаксис цикла for, так как в этом случае это будет проще, чем while.

...