borra 发表于 2006-11-13 14:48

求救:已知曲面函数,但用数组绘制曲面错误

执行以下命令绘图:
x=linspace(30.47625713,30.57531608);
y=linspace(90.56463428,90.63957482);
=meshgrid(x,y)
Z=179925172.76988-6936387.54914148.*X+6991.38179131672.*(X.^2)+2337.85299605506.*(X.^3)-1.72775307890517.*Y-6.76736183768652.*(Y.^2)-176.033731893418.*(Y.^3)+0.802988154617374.*(Y.^4)+0.00584382959709739.*(Y.^5)

结果得到的Z数组结果不对(用标量值x、y带入以上多项式得到正确的结果,证明该多项式没有问题)。
请教高手Z数组的错误原因,不胜感激!

xjzuo 发表于 2006-11-13 15:48

回复

看来你还是没有搞懂"点"运算,Z的表达式中有点乱用"点"的感觉.虽然此例中并不影响结果.
后一句话"Z数组的错误原因"没听懂是什么意思.

[ 本帖最后由 xjzuo 于 2006-11-13 15:53 编辑 ]

borra 发表于 2006-11-13 15:54

对呀,我也觉得是表达式的问题。能给指点一下错误的地方吗?已经查了两天的资料了。多谢了!

borra 发表于 2006-11-13 15:58

"Z数组的错误原因"是指我在workspace中打开Z这个数组时发现各个元素偏离测量值较大。

xjzuo 发表于 2006-11-13 16:16

回复

如果模型已经选定为你给的Z表达式,那么如下计算本身并没有任何错误:

%%%稍微修改了一下:
x=linspace(30.47625713,30.57531608);
y=linspace(90.56463428,90.63957482);
=meshgrid(x,y);
Z=179925172.76988-6936387.54914148*X+6991.38179131672*X.^2+2337.85299605506*X.^3-1.72775307890517*Y-6.76736183768652*Y.^2-176.033731893418*Y.^3+0.802988154617374*Y.^4+0.00584382959709739*Y.^5;
mesh(X,Y,Z)

但你说的"测量数据"我不知道是否仍然以该模型Z为基础,还是...?
可能要稍微说一下你的测量过程.

[ 本帖最后由 xjzuo 于 2006-11-13 16:19 编辑 ]

borra 发表于 2006-11-13 17:23

非常感谢你给的改正。
Z表达式是我根据GPS测量数据用1stopt拟和出来的,“测量数据”不是以该模型为基础,而是原始采集数据。根据Z表达式计算单个点的高程值,然后与该测量数据中的高程值作比较,差值很小。4800米左右的测量值误差为2~3米。

borra 发表于 2006-11-13 17:34

照你的修改充作了一下,但结果还是那样。
我在workspace中打开Y时,当"numeric format"为shortG时,某些相邻行数值一样,当将"numeric format"改为shortG时,数值没有相同的行。
X数组没有这种现象,一切正常。
请问这是什么原因?是因为只是显示的问题吗?我实在找不出别的原因了。

xjzuo 发表于 2006-11-13 19:07

回复

我在第一次回复中已经讲了“虽然此例中并不影响结果”,所以修改后结果不变。

按你的意思是,好象是先采样,用1stopt拟合出了Z的表达式;然后再采样,与模型Z比较,发现不是很相符,是这个意思吗?
还是说拟合得到的模型Z给出的数据与原来的采样数据偏差太大?如果是这样,那只能说“拟合得到的模型Z”并不好,应该试试其它模型了.
另:拟合模型给出的数据与原数据有一定的小偏差是正常的.

如果可以的话,可以把你的数据传上来,看看是否可以找到其它模型。

[ 本帖最后由 xjzuo 于 2006-11-13 19:11 编辑 ]

borra 发表于 2006-11-13 19:15

当用数组计算时拟合得到的模型Z给出的数据与原来的采样数据偏差太大,用单个点的x、y坐标代入模型得到的数据与原测量数据的偏差很小。

borra 发表于 2006-11-15 11:10

问题解决了,是将模型应用到错误的数据上了,谢谢xjzuo的提示。
页: [1]
查看完整版本: 求救:已知曲面函数,但用数组绘制曲面错误