MATLAB中的赋值问题,把出现的某一数字全部赋值为0;

num=
-8.10000000000000e-05 -8.10000000000000e-05 -8.10000000000000e-05
-8.10000000000000e-05 -8.10000000000000e-05 -8.10000000000000e-05
0.000100925169141589 0.00291459833595017 0.000101305453301991
0.000104379958109272 0.000113777692096801 0.000104240857495375
我想把出现-0.000081的数都变成,写了一个
num(num=-0.000081)=0;为什么不会变
num(num==-0.000081)==0;这样也不行

num(num==num(1))=0;
主要是那个8.100....e-5是个浮点数,很多的0后边可能还有个小值
所以它是不等于0.000081的

或者你用C语言常用判断浮点数相等的办法

num(abs(num-0.000081)<eps)=0追问

您好,num(num==num(1))=0;中的num(1)是什么意思

追答

就是矩阵num的第一个元素啊
我看你的num矩阵里面,第一个元素刚好是0.000081
所以用num==num(1)这个判定

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-16
应该是这样处理:
MyNum0=num; %%% 记录原先的矩阵
CZSZ=num(1,1); %%% 查找数组中的某个值;
THSZ=0; %%% 拟替换的数值
num(num==CZSZ)=THSZ;
第2个回答  2014-11-15
num(find(num==-0.000081))=0;