我在Matlab中保存datenum有一个小问题。 我有一个传感器可以实时读取数据。然后我加上计算机收到读数的时间。 我正在构建一个矩阵,第一列时间从函数现在给出,第二列是数据。这是在Matlab中实时完成的。一切都很完美,直到我必须保存数据。
保存数据时,日期会自动舍入。如果我现在绘制我的时间(da变量),我会得到一个增加的功能。 但是,如果我绘制mam(1,:),我会得到一条扁线。 我尝试了很多东西,但结果相同。
您知道吗,如何在Matlab中保存矩阵(ma)以保留日期中的所有小数?
这是一个模拟我问题的小脚本:
s=0;
j=1;
for i=1:10
s(j)=s(end)+i;
da(j)=now;
pause(1);
j=j+1;
end
ma= [da; s];
dlmwrite('mam.dat',ma);
`
答案 0 :(得分:0)
您提供的代码运作正常。这可以通过查看ma(1,1)
和ma(2,1)
与ma(1,1) - ma(1,2)
之间的差异来验证,format('long')
不会返回0。
显示数据时发生舍入。到default matlab displays 6 decimal places。命令nSample = 10;
s = nan(nSample,1); % pre allocate arrays, much faster for big arrays
da = nan(nSample,1);
for i = 1:nSample
if i==1
s(i) = 1;
else
s(i) = s(i-1) + i;
end
da(i) = now;
end
ma = [da; s];
dlmwrite('mam.dat', ma);
将导致显示所有小数位。
样式注释:
你的循环中的逻辑有点奇怪,这里有更多的 matlaby 方式去做你上面写的
{{1}}
答案 1 :(得分:0)
如果要以尽可能多的精度保存数据,请导出到二进制MAT文件而不是文本文件:
save mam.mat ma