matlab中等高线contour的问题数据格式为:编号 x坐标 y坐标 z高程1,270.55,-31.72,143.082,262.40,-31.10,134.483,257.20,-30.28,127.284,254.81,-31.21,123.36·····现在我已经用csvread函数把x,y,z分别提取出来了 存在x,y
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 15:00:55
matlab中等高线contour的问题数据格式为:编号 x坐标 y坐标 z高程1,270.55,-31.72,143.082,262.40,-31.10,134.483,257.20,-30.28,127.284,254.81,-31.21,123.36·····现在我已经用csvread函数把x,y,z分别提取出来了 存在x,y
matlab中等高线contour的问题
数据格式为:
编号 x坐标 y坐标 z高程
1,270.55,-31.72,143.08
2,262.40,-31.10,134.48
3,257.20,-30.28,127.28
4,254.81,-31.21,123.36
·····
现在我已经用csvread函数把x,y,z分别提取出来了 存在x,y,z 这三个vector里
而且实现了用satter(x,y)把点展到图上(如图)现在的问题是:
怎么生成等高线或者曲面啊?
contour(x,y,z)好像不行啊
报错提示是说我这个z矩阵应该是一个2X2以上的矩阵
我这里z是一个以为数组
是要在用contour之前把数据重新组织一下么,怎么组织?
但是我对matlab的数据结构不是很熟
希望有达人指点
matlab中等高线contour的问题数据格式为:编号 x坐标 y坐标 z高程1,270.55,-31.72,143.082,262.40,-31.10,134.483,257.20,-30.28,127.284,254.81,-31.21,123.36·····现在我已经用csvread函数把x,y,z分别提取出来了 存在x,y
x=rand(1,10);
y=rand(1,10);
z=rand(1,10); %我这里用随机数了,你的用读取到的数据代替.
%要把离散数据网格化,因为contour,surface和mesh接受的都是网格化数据.
xi=linspace(min(x),max(x),50); %从最小到最大之间取若干点,我用了50个,你可以随意改.
yi=linspace(min(y),max(y),50);
[xi,yi]=meshgrid(xi,yi); %网格化x,y
zi=griddata(x,y,z,xi,yi,'cubic'); % 网格化z,实际上就是二维插值,可以用'linear'有棱角的,'cubic'就比较平滑.
subplot(1,2,1)
contour(xi,yi,zi) %如果不需要比较立体图,那就不需要subplot了,直接contour
colorbar
subplot(1,2,2)
mesh(xi,yi,zi) % 立体效果图,用surf也可以.