0

我在 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);

`

4

2 回答 2

0

您提供的代码工作正常。这可以通过查看不返回 0ma(1,1)和之间ma(2,1)的差异来验证。ma(1,1) - ma(1,2)

显示数据时进行舍入。默认情况下, matlab 显示 6 位小数。该命令format('long')将显示所有小数位。

样式说明

你的循环中的逻辑有点奇怪,这里有更多的matlaby方法来做你上面写的

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);
于 2012-06-21T15:23:05.387 回答
0

如果您想以与存储在变量中一样高的精度保存数据,请导出到二进制 MAT 文件而不是文本文件:

save mam.mat ma
于 2012-06-23T08:01:13.057 回答