【发布时间】:2018-10-26 20:54:57
【问题描述】:
我可以绘制 trisurf 图表,但 surf 不起作用。
我做错了什么?
pkg load statistics;
figure (1,'name','Matrix Map');
colormap('hot');
t = dlmread('C:\Map3D.csv');
tx =t(:,1);ty=t(:,2);tz=t(:,3);
tri = delaunay(tx,ty);
handle = surf(tx,ty,tz); #This does NOT work
#handle = trisurf(tri,tx,ty,tz); #This does work
`错误:表面:行(Z)必须与长度(Y)相同,列(Z)必须与长度相同 (十)
我的数据是 CSV 格式(此处未显示逗号)
1 2 -0.32
2 2 0.33
3 2 0.39
4 2 0.09
5 2 0.14
1 2.5 -0.19
2 2.5 0.13
3 2.5 0.15
4 2.5 0.24
5 2.5 0.33
1 3 0.06
2 3 0.44
3 3 0.36
4 3 0.45
5 3 0.51
1 3.5 0.72
2 3.5 0.79
3 3.5 0.98
4 3.5 0.47
5 3.5 0.55
1 4 0.61
2 4 0.13
3 4 0.44
4 4 0.47
5 4 0.58
1 4.5 0.85
【问题讨论】:
-
错误消息中明确指出了原因:
surf期望x、y作为向量(定义笛卡尔网格)和z作为矩阵(该网格上的数据)有合适的尺寸。在您的情况下,这三个参数似乎是向量(并且可能不像网格)。 -
我没有看到任何关于向量或矩阵的信息!您是否正在查看不同的错误消息?你能告诉我如何从我所拥有的转换为向量或矩阵吗?
-
你是对的。我在想一种具体的形式叫
surf,即surf(vector_x, vector_y, matrix_z),但也可以是surf(matrix_x, matrix_y, matrix_z)。我建议你看看documentation中的例子 -
其实我之所以把这个问题放到StackOverflow上是因为看不懂文档!