matlab涉及小数运算精度问题delta_w=0.05*piN3=11*pi/delta_wk3=0:N3-1请大家在MATLAB中运行这个,结果我在命令窗口中查看,很显然size运算错了,从0到219是220个数呀,因为我有程序需要用到这三句,结果由于
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/24 04:36:04
matlab涉及小数运算精度问题delta_w=0.05*piN3=11*pi/delta_wk3=0:N3-1请大家在MATLAB中运行这个,结果我在命令窗口中查看,很显然size运算错了,从0到219是220个数呀,因为我有程序需要用到这三句,结果由于
matlab涉及小数运算精度问题
delta_w=0.05*pi
N3=11*pi/delta_w
k3=0:N3-1
请大家在MATLAB中运行这个,结果我在命令窗口中查看,很显然size运算错了,从0到219是220个数呀,因为我有程序需要用到这三句,结果由于这个错误,导致我矩阵长度不匹配,求大家看看这是怎么回事
matlab涉及小数运算精度问题delta_w=0.05*piN3=11*pi/delta_wk3=0:N3-1请大家在MATLAB中运行这个,结果我在命令窗口中查看,很显然size运算错了,从0到219是220个数呀,因为我有程序需要用到这三句,结果由于
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)来代替你的语句