网站建设展板,wordpress python导入数据库,武义住房和城乡建设局网站,简述网站的推广策略前言 今天手头上拿到一份论文的xlsx数据#xff0c;要求使用MATLAB绘制进行三维图标坐标绘制。那么我们来看看如何使用如下数据进行绘图。 如上数据所示#xff0c;数据是一个30行25列的数据#xff0c;数据的内容是论文某项模型模拟的结果#xff0c;我们希望把横坐标x取…前言 今天手头上拿到一份论文的xlsx数据要求使用MATLAB绘制进行三维图标坐标绘制。那么我们来看看如何使用如下数据进行绘图。 如上数据所示数据是一个30行25列的数据数据的内容是论文某项模型模拟的结果我们希望把横坐标x取值30行纵坐标y取值20列而其横纵坐标对应的表格数值设置为z。 1 三维散点图scatter3
1-1 代码解释
我们直接看代码
clc;
clear all;
filename data.xlsx;
T readtable(filename);
dataMatrix table2array(T);z[dataMatrix];
[x, y]meshgrid(1:size(z,1),1:size(z,2));
xxx(:);
yyy(:);
zzz(:);
scatter3(xx,yy,zz,filled);clc; 和 clear all; clc; 命令用于清除MATLAB命令窗口中的所有输出以便开始一个干净的新会话。 clear all; 命令用于清除工作空间中的所有变量释放内存。 dataMatrix table2array(T);将表格 T 转换为矩阵 dataMatrix。[x, y] meshgrid(1:size(z,1),1:size(z,2)); meshgrid 函数用于生成网格点坐标。这里它生成了两个矩阵 x 和 y它们的大小与 z 相同。x 矩阵的每个元素表示网格点的x坐标y 矩阵的每个元素表示网格点的y坐标。size(z,1) 和 size(z,2) 分别返回矩阵 z 的行数和列数。也就是30和25xxx(:);、yyy(:); 和 zzz(:);将矩阵 x、y 和 z 转换为列向量 xx、yy 和 zz。这是因为 scatter3 函数需要输入向量的形式而不是矩阵。
1-2 scatter3函数API
scatter3函数用于在三维空间中绘制散点图。其基本语法如下
scatter3(x, y, z)
scatter3(x, y, z, s)
scatter3(x, y, z, s, c)
scatter3(..., filled)x、y、z这三个参数分别代表三维空间中的x、y、z坐标。s可选参数用于设置每个散点的大小。默认值为36平方点。c可选参数用于设置每个散点的颜色。可以是一个颜色值或颜色映射。filled可选参数用于填充散点。
1-3 效果展示 值得注意的是如果使用的是MATLAB 2013a 版本之前的版本,readtable 函数是不可用的需要替换为底下的xlsread
[dataMatrix, txt, raw] xlsread(filename); 2 三维表面图 surf
2-1 代码实现
先看代码
clc;
clear all;
filename data.xlsx;
[dataMatrix, txt, raw] xlsread(filename); % 生成网格
[x, y] meshgrid(1:size(dataMatrix, 2), 1:size(dataMatrix, 1)); % 生成网格注意行列的顺序% 创建三维表面图使用 scatter 形式来近似散点图
surf(x, y, dataMatrix, EdgeColor, none, Marker, o, MarkerSize, 5);
xlabel(X Axis);
ylabel(Y Axis);
zlabel(Data Value);
title(3D Surface Plot with Scatter Points);
view(60, 45); view(60, 45); 是调整视角,这个函数允许用户设置视角的仰角elevation angle和方位角azimuth angle。 仰角elevation angle这是从 x 轴正方向开始测量的角度范围通常是从 -90° 到 90°。0° 表示从正面看90° 表示从顶部看-90° 表示从底部看。方位角azimuth angle这是从正 y 轴开始测量的角度范围通常是从 0° 到 360°。0° 或 360° 表示从正方向看90° 表示从左侧看180° 表示从背面看270° 表示从右侧看。
2-2 surf函数API
MATLAB中的surf函数用于创建三维曲面图。以下是surf函数的详细API
surf(X,Y,Z)
surf(X,Y,Z,C)
surf(Z)
surf(...,PropertyName,PropertyValue,...)
h surf(...)surf(X,Y,Z)使用矩阵X、Y和Z来绘制三维曲面图。X和Y定义网格点的x和y坐标Z定义网格点的z坐标。surf(X,Y,Z,C)使用矩阵X、Y、Z和C来绘制三维曲面图。C用于指定颜色数据如果未提供则使用与Z相同的数据。surf(Z)当Z是一个矩阵时surf函数会自动生成网格线并使用Z的列数和行数作为x和y坐标。surf(...,PropertyName,PropertyValue,...)允许您使用名称-值对参数来设置曲面图的属性。例如您可以使用EdgeColor属性来设置边缘颜色。h surf(...)返回曲面图的句柄以便您可以对其进行进一步的修改。
2-3 效果展示 2012版本 新版--------------------------------------- 3 三维折线图plot3
3-1 问题描述
直接使用plot3对画图操作会出现一些问题
clc;
clear all;
filenamedata.xlsx
[dataMatrix, txt, raw] xlsread(filename);
z[dataMatrix]
[x, y] meshgrid(1:size(dataMatrix, 2), 1:size(dataMatrix, 1));
xx x(:);
yy y(:);
zz z(:);
plot3(xx, yy, zz);grid on; 由于是连续画点连线导致每换到下一列的时候上一列结尾的数据和下一列的开头连在一起了这是我们不希望的。
3-2 修正代码
我们使用循环一次只画一列数据最后一次换列画图得到正确的图像
clc;
clear all;
filenamedata.xlsx
[dataMatrix, txt, raw] xlsread(filename); for col 1:25
% 提取当前列的数据
z dataMatrix(1:30, col);
% 创建网格
[x, y] meshgrid(1:30,col);
xx x(:);
yy y(:);
zz z(:);
% 绘制当前列的数据
plot3(xx, yy, zz);
xlabel(X 坐标);
ylabel(Y 坐标);
zlabel(Z 值);
grid on;
hold on; % 保持当前图形以便在同一图形上绘制下一个列的数据pause(0.5);
end3-3 效果展示 2012版本 新版---------------------------------------- 4 总结
本文介绍了三种绘制MATLAB三维点图的方法三维散点图scatter3,三维表面图surf, 三维折线图plot3如有错误欢迎指出感谢大家的支持