lxo_0602 发表于 2007-10-19 21:54

输入文件数据失真?

我要把一组曲线数据(40.txt)输入Matlab,并用数组z2_history存起来。
40.txt里存的是一条曲线的信息(X-Y),且X相当于Y来说很小,数据如下:
/*(X         Y) 用于理解,实际没有这个*/
0.01125 7.9743345E+009
0.01375 8.1522268E+009
...
0.016249999 8.0881219E+009
0.018749999 7.8106481E+009

用了以下命令:
fid = fopen('E:\40.txt','r');
z2_history = fscanf(fid,'%f %f',);
fclose(fid);

用 z2_history=z2_history' 再输出z2_history后得到:
z2_history =

1.0e+009 *

    0.0000    7.9743
    0.0000    8.1522
    ...
    0.0000    8.0881
    0.0000    7.8106

由于X相当于Y来说很小,此时X全变为0,没有正确输入。我想到的是把X乘以一个大数或Y除去一个大数,
从而使X、Y在一个数量级上,可X、Y都在文件中,不知如何处理。
请问大家,这个应该怎么处理,才能使得数据不失真??

[ 本帖最后由 eight 于 2007-10-19 22:39 编辑 ]

花如月 发表于 2007-10-19 22:00

直接用load就可以了吧?

lxo_0602 发表于 2007-10-19 22:05

可能我没说清楚,现在文件已经读进去,
只是二组数据不在一个量级上(相差10^9),所以说那组小的数全置为0了。
或者你的意思是用load命令就不会出现这个问题了?

---------------------------------------------
正是这个意思,你试试看行不行。
问题有些蹊跷,看看精华帖子吧。

[ 本帖最后由 花如月 于 2007-10-19 22:10 编辑 ]

octopussheng 发表于 2007-10-19 22:08

会不会是有效数字在搞鬼啊??

花如月 发表于 2007-10-19 22:12

读错几乎不可能,可能是显示的问题。如果问题没有解决,建议把你的40.txt传上来。

eight 发表于 2007-10-19 22:48

原帖由 lxo_0602 于 2007-10-19 21:54 发表 http://www.chinavib.com/forum/images/common/back.gif
我要把一组曲线数据(40.txt)输入Matlab,并用数组z2_history存起来。
40.txt里存的是一条曲线的信息(X-Y),且X相当于Y来说很小,数据如下:
/*(X         Y) 用于理解,实际没有这个*/
0.01125 7.9743345E ...

这是显示精度的问题,实际计算不会影响的

VibrationMaster 发表于 2007-10-20 07:04

只显示第一列z2_history(:,1)看一看,应该没有问题

无水1324 发表于 2007-10-20 09:33

回复 #1 lxo_0602 的帖子

应该是显示精度的问题

lxo_0602 发表于 2007-10-20 10:04

问题已解决。
现在是显示出错了,要么是有效数字的问题(这也是我原本以为的),要么是显示的问题。
VibrationMaster站友提示显示第一行,得到以下结果:
z2_history(:,1)

ans =

    0.0113
    0.0138
    0.0162
    0.0187
    0.0213
    0.0238
    0.0263
得到想要的结果,是显示的问题。
大家基本上都说对了,谢谢各位站友的热情帮忙!

eight 发表于 2007-10-20 10:19

解决了就好,其实这个问题版面已经讨论过多次,自己搜索一下就很快知道问题所在了。大家还是不愿意自己动手
页: [1]
查看完整版本: 输入文件数据失真?