当前位置:编程学习 > Matlab >>

求懂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的)

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,