matlab利用三列数据生成一个二维图像,前两个设为坐标x,y第三个数据表示图像颜色强度
数据如上图所示,三列前两列表示坐标,第三列表示颜色强度生成图如这个图这样。求高手解答下坐标点是离散的,而且由坐标点生成的像素点与颜色必须与坐标点含量值一一对应...
数据如上图所示,三列 前两列表示坐标,第三列表示颜色强度
生成图如这个图这样。求高手解答下
坐标点是离散的,而且由坐标点生成的像素点与颜色必须与坐标点含量值一一对应 展开
生成图如这个图这样。求高手解答下
坐标点是离散的,而且由坐标点生成的像素点与颜色必须与坐标点含量值一一对应 展开
2个回答
展开全部
首先将三列数据放到三个列向量X,Y,Z中
X,Y就是第一、二列数据,是坐标,Z表示强度,用颜色表示
把这样的数据图表示成二维的图像有两种办法
第一种,把不规则的散点数据插值计算到规则的二维网格,再画图
XI=linspace(min(X),max(X),m); %根据需要将X划分为m分
YI=linspace(min(Y),max(Y),n); %根据需要将Y划分为n分
ZI=griddata(X,Y,Z,XI,YI.'); %最后ZI是个nxm的矩阵
imagesc(XI,YI,ZI);colorbar; %使用imagesc将矩阵画成图像
这种办法,由于数据是规则的网格,所以图像比较漂亮
而得到的二维规则矩阵,很容易保存成图像
但是数据是插值出来的,所以失去原来散点的信息
第二种,将散点数据用划分为平面内多个互相连接三角形,再画图
tri=delaunay(X,Y); %将散点划分为平面三角形网格
patch('Faces',tri,'Vertices',[X,Y],'FaceVertexCData',Z,...
'FaceColor','interp','EdgeColor','none');
colorbar;
这种办法得到的图像完全保留散点的信息
还可以将最后的边颜色设置为黑色'EdgeColor','k'
这是显示三角形网格的划分
在原来散点的位置,X,Y,Z都是一一对应的
所以坐标点生成的像素点与颜色与坐标点含量值肯定一一对应
而其它地方的颜色是由这些值插值而得
这样图像边缘可能不规则
X,Y就是第一、二列数据,是坐标,Z表示强度,用颜色表示
把这样的数据图表示成二维的图像有两种办法
第一种,把不规则的散点数据插值计算到规则的二维网格,再画图
XI=linspace(min(X),max(X),m); %根据需要将X划分为m分
YI=linspace(min(Y),max(Y),n); %根据需要将Y划分为n分
ZI=griddata(X,Y,Z,XI,YI.'); %最后ZI是个nxm的矩阵
imagesc(XI,YI,ZI);colorbar; %使用imagesc将矩阵画成图像
这种办法,由于数据是规则的网格,所以图像比较漂亮
而得到的二维规则矩阵,很容易保存成图像
但是数据是插值出来的,所以失去原来散点的信息
第二种,将散点数据用划分为平面内多个互相连接三角形,再画图
tri=delaunay(X,Y); %将散点划分为平面三角形网格
patch('Faces',tri,'Vertices',[X,Y],'FaceVertexCData',Z,...
'FaceColor','interp','EdgeColor','none');
colorbar;
这种办法得到的图像完全保留散点的信息
还可以将最后的边颜色设置为黑色'EdgeColor','k'
这是显示三角形网格的划分
在原来散点的位置,X,Y,Z都是一一对应的
所以坐标点生成的像素点与颜色与坐标点含量值肯定一一对应
而其它地方的颜色是由这些值插值而得
这样图像边缘可能不规则
更多追问追答
追问
追答
patch就是给空间区域填充颜色
特别的可以用于三角网格表示的多个三角形的颜色填充
首先用
tri=delaunay(X,Y);
将撒播点数据X,Y划分为三角形网格
得到的tri是个nx3的矩阵,
n是划分三角形的个数
每一行三个数是十三个下标,表示三角形三个角分别是X,Y数据中的哪个
所以tri就相当记录了每个三角形的信息
而X,Y记录了这些三角形顶点的信息
其实得到tri后加上X,Y数据
我们很容易用tirplot(tri,X,Y)画出划分后的网格
加上Z数据,我们还可用
trimesh(tri,X,Y,Z)或trisurf(tri,X,Y,Z)画出三维的曲面图
现在你只需要画二维的图像,而Z用颜色表示,所以用patch比较合适
'Faces',tri,'Vertices',[X,Y] 就指定了三角网格的面和顶点
'FaceVertexCData',Z,'FaceColor','interp', 指定了顶点的颜色是根据Z数据确定,
而三角形面本身是没有数据的,所以用‘interp’就是插值来决定颜色
'EdgeColor','none'; 边指定三角形边的颜色,这里不要所以用‘none’
颜色对比不明显,是你的数据分布不均匀的结果
你可以在画完图之后,在菜单中选取Edit的Colormap选项
就会弹出一个Colormap Editor的对话框
拖动其中颜色条的标签位置就可以改变颜色
根据自己的需要调整到最好看就可以了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询