找回密码
 立即注册
查看: 201|回复: 0

Matlab图形与图像处理(3.11-3.15)

[复制链接]
发表于 2023-3-29 16:40 | 显示全部楼层 |阅读模式
3.11 绘制参数化函数的曲面图
x=0:0.02*pi:2*pi;
y=0:0.01*pi:pi;
[s,t]=meshgrid(x,y); %%利用向量xy,定义二维网格矩阵
r = 2 + sin(7.*s + 5.*t);
X = r.*cos(s).*sin(t);
Y = r.*sin(s).*sin(t);
Z = r.*cos(t);
subplot(131),surface(X,Y,Z)%%创建一个三维曲面图,曲面颜色根据矩阵高度而变化
title('扭转曲面对象')%%添加图像标题
xlabel('x-axis'),ylabel('y-axis '),zlabel('z-axis')%%添加坐标轴标注
subplot(132),surface(X,Y,Z)
view(3)%%切换到三维视图
title('surface扭转曲面') %%添加图像标题
xlabel('x-axis'),ylabel('y-axis '),zlabel('z-axis') %%添加坐标轴标注
subplot(133),surf(X,Y,Z)%%绘制xyz定义的曲面图
title('surf扭转曲面')%%添加图像标题
xlabel('x-axis'),ylabel('y-axis '),zlabel('z-axis') %%添加坐标轴标注



3.12 查看曲面壁厚图像的情况,可以在曲面的相应位置打个洞孔,也就是将相应的数据设置为空
所有的MATLAB函数都忽略数据为空的数据点,在该点出现的地方出现一个洞孔
[X,Y,Z]=peaks(30); %%使用山峰函数,返回30*30的矩阵,以及用于参数绘图的矩阵xy
x=X(1,:);%%提取矩阵x的第一行
y=Y(:,1);%%提取矩阵y的第一列
i=find(y>0.8 & y<1.2);%%在提取的列向量中,查找大于0.8且小于1.2的元素,返回查找结果的索引
j=find(x>-.6 & x<.5);%%在提取的行向量中,查找大于-0.6且小于0.5的元素,返回查找结果的索引
Z(i,j)=nan*Z(i,j);%%将查找结果对应的元素值设置为空
surf(X,Y,Z);%%使用指定的坐标矩阵创建具有实色边和实色面的三维曲面图,指定为空的数字区域显示为一个洞孔
title('带洞孔的山峰表面');%%添加图像标题
xlabel('x-axis'),ylabel('y-axis '),zlabel('z-axis')%%分别标注xyz轴


************************************************************
1.k = find(X)
  功能:返回一个向量,该向量包含数组X中每个非零元素的线性索引。
  如果X是向量,则find返回与X方向相同的向量。
  如果X是多维数组,则find返回结果线性索引的列向量。
  如果X不包含非零元素或为空,则find返回一个空数组。
2.k = find(X,n)
  功能:返回对应于X中非零元素的前n个索引。
3.k = find(X,n,direction)
  功能:其中direction为'last',查找X中的最后n个非零元素。方向的默认值为'first',查找前n个非零元素。
4.[row,col] = find(___)
  功能:使用先前语法中的任何输入参数返回数组X中每个非零元素的行和列下标。
5.[row,col,v] = find(___)
  功能:返回向量v,其中包含X的非零元素。
3.13 分别用三个绘图命令绘制函数的曲面图像
x=-4:0.25:4;
y=x;
[X,Y]=meshgrid(x,y);%%用xy定义二维网格数据矩阵
Z=X.*exp(-X.^2-Y.^2);%%用xy定义函数表达式z
subplot(131)%%显示第一个子图的坐标区
plot3(X,Y,Z)%%绘制xyz定义的三维曲线
title('plot3作图')%%添加图像标题
subplot(132)%%显示第二个子图的坐标区
surf(X,Y,Z)%%绘制由xyz定义的三维曲面图
title('surf作图')%%添加图像标题
subplot(133)%%显示第三个子图的坐标区
surfnorm(X,Y,Z)%%绘制xyz定义的三维曲面的法向量
title('surfnorm作图')%%添加图像标题



3.14 绘制马鞍面曲面的三维曲面图
fsurf(@(x,y) -x.^4+y.^4-x.^2-y.^2-2.*x.*y)%%利用图像函数绘制三维曲面图
title('马鞍面')%%添加图像标题
xlabel('x'),ylabel('y'),zlabel('z')%%分别标注xyz轴



3.15 绘制三维散点图
[X,Y,Z] = peaks(20); %%利用山峰函数,创建三个20*20的矩阵XYZ
x = [0.5*X(:); 0.75*X(:); X(:)];%%利用矩阵定义取值点矩阵xyz
y = [0.5*Y(:); 0.75*Y(:); Y(:)];
z = [0.5*Z(:); 0.75*Z(:); Z(:)];
scatter3(x,y,z,'*') %%输入三维散点图,符号用*表示


(1)scatter3(X,Y,Z)
在向量 X、Y 和 Z 指定的位置显示圆圈。
(2)scatter3(X,Y,Z,S)
使用 S 指定的大小绘制每个圆圈。要绘制大小相等的圆圈,请将 S 指定为标量。要绘制具有特定大小的每个圆,请将 S 指定为向量。
(3)scatter3(X,Y,Z,S,C)
使用 C 指定的颜色绘制每个圆圈。
如果 C 是 RGB 三元组,或者是包含颜色名称的字符向量或字符串,则使用指定的颜色绘制所有圆圈。
如果 C 是一个三列矩阵,其中 C 中的行数等于 X、Y 和 Z 的长度,则 C 的每行指定相应圆圈的 RGB 颜色值。
如果 C 是长度与 X、Y 和 Z 的长度相同的向量,则 C 中的值线性映射到当前颜色图中的颜色。
(4)scatter3(___,, ‘filled’)
使用前面的语法中的任何输入参数组合填充这些圆。
(5)scatter3(___,markertype)
指定标记类型。
(6)scatter3(___,Name,Value)
使用一个或多个名称-值对组参数修改散点图。
(7)scatter3(ax,___)
将图形绘制到 ax 指定的坐标区中,而不是当前坐标区 (gca) 中。选项 ax 可以位于前面的语法中的任何输入参数组合之前。
(8)h = scatter3(___)
返回 Scatter 对象。在创建散点图后,可使用 h 修改其属性。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-17 04:13 , Processed in 0.091737 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表