matlab涉及小数运算精度问题

delta_w=0.05*piN3=11*pi/delta_wk3=0:N3-1请大家在MATLAB中运行这个,结果我在命令窗口中查看,很显然size运算错了,从0到21... delta_w=0.05*pi

N3=11*pi/delta_w

k3=0:N3-1
请大家在MATLAB中运行这个,结果我在命令窗口中查看,很显然size运算错了,从0到219是220个数呀,因为我有程序需要用到这三句,结果由于这个错误,导致我矩阵长度不匹配,求大家看看这是怎么回事
展开
 我来答
eflen
推荐于2018-03-22 · TA获得超过560个赞
知道小有建树答主
回答量:340
采纳率:100%
帮助的人:341万
展开全部
matlab计算时默认的采用double类型的数据,所以绝大多数的数值都是存在误差的。
在比较两个数是否相等时,就判断这两个数的差是否在误差内,在内部就认为想等,在外部就认为不等。
你出现的这个问题正好是由于这个原因,
d1=220-N3
d1= 2.842170943040401e-014

而d2=eps(220)=2.842170943040401e-014

现在是一个更特殊的情况d1=d2,所以正好认为N3与220不是一个数,而是一个比220要小且大于219的数,所以会出现这种情况。

对你的程序,你可以根据程序逻辑用N3=ceil(11*pi/delta_w)或者N3=round(11*pi/delta_w)来代替你的语句
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式