声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1834|回复: 8

[综合讨论] matlab中矩阵中的小数变为0

[复制链接]
发表于 2009-3-30 21:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我在计算过程中,会有一些计算得到的数值放到一个矩阵/向量中,有大有小,e-3,e-4,e-5次等等都有,结果如果这个数为e-05次及以下的话,全都按0来计算了。如何来解决这个问题呢?麻烦大侠给讲讲。
回复
分享到:

使用道具 举报

发表于 2009-3-31 09:44 | 显示全部楼层
a=A(:);%A为你要计算的矩阵
for i=1:length(a)
     if a<1e-05
        a(i)=0;
     end
end

[ 本帖最后由 maigicku 于 2009-3-31 09:46 编辑 ]

评分

1

查看全部评分

发表于 2009-3-31 10:10 | 显示全部楼层
A(A<1e-5)=0;

评分

1

查看全部评分

发表于 2009-3-31 11:22 | 显示全部楼层
aa=rand(5); bb=aa/10^4
bb(find(bb<1e-05))=0
发表于 2009-3-31 11:28 | 显示全部楼层
发表于 2009-3-31 13:37 | 显示全部楼层
楼主的意思是不是 你在计算过程中得到的数据在矩阵中显示的有效位数太少,
比如 你的实际数据应该是 0.0000001,
但在矩阵中显示的是 0.000   

这是数据显示格式问题,
Matlab默认的按照format short e输出
楼主可用通过 format long 加大输出的显示有效位数;
常用的改变输出格式的命令是 vpa 和 format

评分

1

查看全部评分

发表于 2009-3-31 15:22 | 显示全部楼层
原帖由 ydlcsu 于 2009-3-31 10:10 发表
A(A<1e-5)=0;


这个最简便,我写的那个只当作一个思路

[ 本帖最后由 ChaChing 于 2009-3-31 20:41 编辑 ]
 楼主| 发表于 2009-4-17 09:29 | 显示全部楼层
原帖由 penghust 于 2009-3-31 13:37 发表
楼主的意思是不是 你在计算过程中得到的数据在矩阵中显示的有效位数太少,
比如 你的实际数据应该是 0.0000001,
但在矩阵中显示的是 0.000   

这是数据显示格式问题,
Matlab默认的按照format short e输出
楼 ...


---------
是这样子的,我本以为它在后面的计算中式按0来计算了,后来经过验证,发现虽然是显示为0,但是按很小的数来计算。
不知道我的验证是不是正确的?
发表于 2009-4-18 22:57 | 显示全部楼层

回复 8楼 thinkpower 的帖子

正确的
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 15:33 , Processed in 0.066661 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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