爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
12
返回列表 发新帖
楼主: fairyes

[混合编程] excel读取数据后怎么取消科学计数法而全部实数显示

[复制链接]

新浪微博达人勋

 楼主| 发表于 2013-5-30 08:16:04 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-5-30 12:12:33 | 显示全部楼层
fairyes 发表于 2013-5-30 08:14
哦,那难道没有办法使workspace里的值按实数显示吗?我的这些数据是用来表示日期的,它自动转换为双精度浮 ...

读取的时候你按字符读取看看
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-5-30 20:00:50 | 显示全部楼层
Aires 发表于 2013-5-30 12:12
读取的时候你按字符读取看看

嗯,谢谢你的耐心帮助,我试了字符读取,是可以达到按实数显示的目的,可是读取为文本后,不能用于我接下来的计算,所以还是得不到我想要的结果,matlab里没有数字实数显示的格式设置吗?帮人帮到底,版主比我懂得多多了,能不能帮忙想想怎么解决这个问题,我找了好久了还是没找到,谢谢~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-5-30 22:06:08 | 显示全部楼层
fairyes 发表于 2013-5-30 20:00
嗯,谢谢你的耐心帮助,我试了字符读取,是可以达到按实数显示的目的,可是读取为文本后,不能用于我接下 ...

不明白你要计算什么,把你的问题再描述清楚一些,贴上你的文本
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-6-4 09:15:57 | 显示全部楼层
Aires 发表于 2013-5-30 22:06
不明白你要计算什么,把你的问题再描述清楚一些,贴上你的文本

你好,谢谢你,不好意思之前在外有事,回复晚了。
这是数据处理的程序:
A = xlmread('D:\MATLAB_content\time.xlsx', 'sheetA','A1:A2322');
B = xlmread('D:\MATLAB_content\flux.xlsx', 'sheetA','B1:B2322');
X = fix(A);
n = 1:2322;
Flux(1999,1) = NaN;
T(1999,1) = NaN;
D(n,1:4) = NaN;
D(:,1) = n;
D(:,2) = A;
D(:,3) = B;
D(:,4) = X;
i = 1;
j = 0;
k = 1;
C = 1998;
while i <= 2322
if D(i,4) == C
    j = j+1;
    i = i+1;
    continue;
else
    switch j
        case 3
            Flux(k,1) = (D(i-1,3) + D(i-2,3) + D(i-3,3));
            T(k,1) = D(i-3,2);
        case 2
            Flux(k,1) = (D(i-1,3) + D(i-2,3));
            T(k,1) = D(i-2,2);
        case 1
            Flux(k,1) = D(i-1,3);
            T(k,1) = D(i-1,2);
        otherwise
            Flux(k,1) = NaN;
            T(k,1) = C;
    end
    k = k+1;
    C = C-1;
    j = 0;
end
end
读取的数据,time就是1988.5;1988.10;1987.4;1987.11;1986.1等,flux就是小数值,这个倒无所谓,主要是time值,读进去后会转化为科学计数法,自动去掉了最后的零,导致我的时间月份读取出错,而转换为字符计算的话,是显示if D(i,4) == C这一步出错,所以我希望的是读进去的数据是按excel里的实数显示与参与运算,不知有什么办法?谢谢~
           
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-6-4 13:08:32 | 显示全部楼层
首先,if D(i,4) == C 应该不对,C是数,D是字符,返回的逻辑值会是4个0,if应该是对一个逻辑值做判断的。你这个我确实没有做过。想到matlab里面有时间关于时间的函数。给你两个帖子的链接,你看一下有没有你需要的。
http://bbs.06climate.com/forum.php?mod=viewthread&tid=6983
http://bbs.06climate.com/forum.php?mod=viewthread&tid=13537
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-6-4 14:32:16 | 显示全部楼层
Aires 发表于 2013-6-4 13:08
首先,if D(i,4) == C 应该不对,C是数,D是字符,返回的逻辑值会是4个0,if应该是对一个逻辑值做判断的。你 ...

D(i,4)是个数据,它是D数组里的第四列值,也就是time去掉小数后的整年值,但我找不到保留其实数显示同时又能用于数值计算的处理方法,还是非常谢谢你的帮助~~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表