我写了一个三维有限元代码,我在球体表面上的一堆散射数据(x,y,z)上得到了函数C(x,y,z)(有限元中的FOUND)的值。我正在尝试使用MATLAB上的surf
来显示函数,我已经使用griddata
在球体表面上插入函数C,但它不起作用,我面临以下问题:
警告:检测到重复的x-y数据点:使用z的平均值 值
我最后看到的最终数字只是一个很差的领域。
答案 0 :(得分:0)
如果你看一下matlab documentation for plotting things on a sphere中给出的例子,你会看到(除其他外)以下几行代码:
k = 5;
n = 2^k-1;
[x,y,z] = sphere(n);
c = hadamard(2^k);
surf(x,y,z,c);
colormap([1 1 0; 0 1 1])
axis equal
在这种情况下,表面上的点由它们的(x,y,z)系数定义,颜色由矩阵c
和色图[1 1 0; 0 1 1]
确定。您描述的错误表明您使用surf(x,y,z)
而不是surf(x,y,z,c)
来创建您的情节。如果您研究上面提到的文档,您可以根据自己的情况调整上述内容 - 如果没有关于数据的更多信息,很难猜出更好的答案。