嗨,我
正在尝试将双精度值放入向量中,但是当我显示此向量时,我看到我放入其中的双精度值被转换为整数。我怎样才能避免这种情况?
我检查了 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
更简单。