如何避免 Matlab 在将这些双精度值放入向量时将这些双精度转换为整数


嗨,我

正在尝试将双精度值放入向量中,但是当我显示此向量时,我看到我放入其中的双精度值被转换为整数。我怎样才能避免这种情况?

我检查了 teta 的值,它们符合预期(即 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;

发生这种情况的唯一方法是x在脚本开始之前被声明为整数(或者可能是逻辑的?您应该始终初始化所有变量,以避免意外错误:在循环之前将x=[];添加到脚本中。

但是您的循环正好运行 200 次迭代,因此您知道x最后的大小。您可以预先分配:

x = zeros(200,1);

我还建议您研究for循环的语法,因为在这种情况下,这比while更简单。

最新更新