matlab中矩阵中的小数变为0
我在计算过程中,会有一些计算得到的数值放到一个矩阵/向量中,有大有小,e-3,e-4,e-5次等等都有,结果如果这个数为e-05次及以下的话,全都按0来计算了。如何来解决这个问题呢?麻烦大侠给讲讲。 a=A(:);%A为你要计算的矩阵for i=1:length(a)
if a<1e-05
a(i)=0;
end
end
[ 本帖最后由 maigicku 于 2009-3-31 09:46 编辑 ] A(A<1e-5)=0; aa=rand(5); bb=aa/10^4
bb(find(bb<1e-05))=0 原帖由 maigicku 于 2009-3-31 09:44 发表 http://www.chinavib.com/forum/images/common/back.gif
a=A(:);%A为你要计算的矩阵...
有需要执行这个吗? 楼主的意思是不是 你在计算过程中得到的数据在矩阵中显示的有效位数太少,
比如 你的实际数据应该是 0.0000001,
但在矩阵中显示的是 0.000
这是数据显示格式问题,
Matlab默认的按照format short e输出
楼主可用通过 format long 加大输出的显示有效位数;
常用的改变输出格式的命令是 vpa 和 format 原帖由 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 编辑 ] 原帖由 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,但是按很小的数来计算。
不知道我的验证是不是正确的?
回复 8楼 thinkpower 的帖子
正确的
页:
[1]