求懂matlab的大侠看看我的程序错在哪
> h=0.0001;
H=0.009;L=0.002;d=0.001;R=0.003;
hr=R/h+1;
hy=H/h+1;
psi1=zeros(hr,hy);
hr
hy
Warning: Size vector should be a row vector with integer elements.
hr =
31
hy =
91.0000
为什么hy的值有小数点而hr的没有呢???
答案:这是因为二进制浮点表示小数的误差引起的,例如0.1用二进制表示就是无限循环小数0.00011001100110011...而matlab采用double型表示会有截位而丧失进度.
H/h为两个浮点数相除,很有可能由于计算误差导致结果并不是预期的整数91,而是非常接近91的小数,因此显示hy为91.0000
浮点运算误差是经常出现的,如果你对结果确定应该是整数,可以采用round来确保最后的结果是整数,也就是说
hr=round(R/h)+1;
hy=round(H/h)+1;
这样下面的warning也不会显示.
上一个:请matlab的高手帮忙看一下下面程序的问题:
下一个:请问哪里有有偿代编程序的,谢谢(matlab的)