matlab 数据存储成excel文件时的精度问题

版权声明:本文为博主原创文章,如能帮助到各位,荣幸之至,欢迎转载。 https://blog.csdn.net/m0_37639589/article/details/79617660

matlab 中数据存储为 excel 文件时的精度问题

matlab 中的精度

在使用 matlab 时,我们有时需要将数据从 matlab 中导出来保存为其他格式的文件。比如,常用
的 excel 文件。数据在 matlab 中都是用双精度存储的(默认情况下),但是显示的话则一般是到小数
点后四位,可以通过命令改变在 matlab 中的显示精度。

>> pi
ans =
    3.1416
>> format long
>> pi
ans =
   3.141592653589793
>> 

纯数字文件转换

如果需要存储的是纯数字,即双精度数据,那么存储到 excel 中精度不会改变。xlswrite('test.xls',pi);
2018-03-19-19-14-52

数字文本混合文件

但是,往往我们需要存储的数据中都包含有表头,也就是非纯数字的。这是一般是将原数据通过 cell
这种数据结构进行存储的。如果,没有对数字精度进行控制,而是直接转化为 cell 则在 excel 中的
精度就会收到损失。

title = {'weight'};
w = 1:100;
w = w';
w = w/100;
filename = 'test.xls';
data = [title;num2cell(w)];
xlswrite(filename,data);

可以看到,只到小数点后 两位:

2018-03-19-20-54-25

如果需要,更高的精度。那么则需要进行一些转换,主要是先将数字转换为字符,在将字符转换为 cell
数据。

title = {'weight'};
w = 1:100;
w = w';
w = w/100;
w = num2str(w,'%10.5e\n');
w = cellstr(w);
filename = 'test.xls';
data = [title;w];
xlswrite(filename,data);
winopen(filename)

结果如下:
2018-03-19-21-11-01

核心是使用 num2str() 进行精度转换。

猜你喜欢

转载自blog.csdn.net/m0_37639589/article/details/79617660