thinkpower 发表于 2009-3-30 21:05

matlab中矩阵中的小数变为0

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

maigicku 发表于 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 编辑 ]

ydlcsu 发表于 2009-3-31 10:10

A(A<1e-5)=0;

ChaChing 发表于 2009-3-31 11:22

aa=rand(5); bb=aa/10^4
bb(find(bb<1e-05))=0

ChaChing 发表于 2009-3-31 11:28

原帖由 maigicku 于 2009-3-31 09:44 发表 http://www.chinavib.com/forum/images/common/back.gif
a=A(:);%A为你要计算的矩阵...

有需要执行这个吗?

penghust 发表于 2009-3-31 13:37

楼主的意思是不是 你在计算过程中得到的数据在矩阵中显示的有效位数太少,
比如 你的实际数据应该是 0.0000001,
但在矩阵中显示的是 0.000   

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

maigicku 发表于 2009-3-31 15:22

原帖由 ydlcsu 于 2009-3-31 10:10 发表 http://www.chinavib.com/forum/images/common/back.gif
A(A<1e-5)=0;

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

[ 本帖最后由 ChaChing 于 2009-3-31 20:41 编辑 ]

thinkpower 发表于 2009-4-17 09:29

原帖由 penghust 于 2009-3-31 13:37 发表 http://www.chinavib.com/forum/images/common/back.gif
楼主的意思是不是 你在计算过程中得到的数据在矩阵中显示的有效位数太少,
比如 你的实际数据应该是 0.0000001,
但在矩阵中显示的是 0.000   

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

---------
是这样子的,我本以为它在后面的计算中式按0来计算了,后来经过验证,发现虽然是显示为0,但是按很小的数来计算。
不知道我的验证是不是正确的?

ChaChing 发表于 2009-4-18 22:57

回复 8楼 thinkpower 的帖子

正确的
页: [1]
查看完整版本: matlab中矩阵中的小数变为0