问题遇到的现象和发生背景
我有一份坐标Excel文件,里面包合很多组(x.y.z)坐标,其中一小部分如下图所示。请问如何使用matlab代码将这些坐标描述的实体绘
制出来?
操作环境、软件版本等信息
0S:win10家庭中文版
matlab:R2021b
尝试过的解决方法
我查了一下工具书,上面没找到关于怎么使用坐标文件绘制立体图形的方法。
我想要达到的结果
编写一段代码,能够读入坐标文件的坐标数据,并在图形窗口输出立体图形
A=xlsread('A.xlsx');
%连线
figure;
plot3(A(:,1),A(:,2),A(:,3));
grid on;
%散点
figure;
scatter3(A(:,1),A(:,2),A(:,3));
grid on;
%面
figure;
surf(A);
grid on;
%网格
figure;
mesh(A);
grid on;
(1)数据提取
使用Mathpix Snippint Tool软件将题主图片中的数据提取了出来并存储到了Excel中:
%读取Excel数据
data=xlsread('data.xlsx');
%通过surf绘制整体的立体图
figure;
surf(data);
xlabel('x');
ylabel('y');
zlabel('z');
%通过fill3绘制数据中不同的立体结构
figure;
fill3(data(1:18,1),data(1:18,2),data(1:18,3),'b');
hold on;
fill3(data(19:23,1),data(19:23,2),data(19:23,3),'b');
hold on;
fill3(data(24:end,1),data(24:end,2),data(24:end,3),'b');
xlabel('x');
ylabel('y');
zlabel('z');
(3)代码运行结果
通过surf绘制整体立体结构结果:
%1、导入文件
filename="D:\文件地址\abcd.csv";
%2、设置取值范围
%读取全部数据
% m=csvread(filename,1,0);%从第2行第0列开始扫描全部数据
%读取指定范围数据
start=1;%开始行
start1=0;%开始列
len=2356;%结束行
len2=6;%结束列
m=csvread(filename,start,start1,[start,start1,len,len2]);
%3、设置坐标轴
pos_x=(uav(:,5));%(:,5)取矩阵的第5列
pos_y=(uav(:,6));%(:,6)取矩阵的第6列
pos_z=(uav(:,7));%(:,7)取矩阵的第7列
%4、绘制曲线
%plot(pos_x,pos_y,'g','LineWidth',1);%绘制二维曲线图
%hold on;
%plot(pos_x,pos_y1,'r','LineWidth',1);
%hold on;
%plot(pos_x2,pos_y2,'b','LineWidth',2);
%hold on;
plot3(pos_x,pos_y,pos_z,'r','LineWidth',2);%绘制三维曲线图
hold on;
%5、坐标轴定义
xlabel('X/m');%设置x轴标签
set(get(gca,'xlabel'),'FontSize',10);%设置x轴标签格式
ylabel('Y/m');%设置y轴标签
set(get(gca,'ylabel'),'FontSize',10);%设置y轴标签格式
%设置三维坐标轴,并设置视角
zlabel('Z/m');%设置z轴标签
set(get(gca,'zlabel'),'FontSize',10);%设置z轴标签格式
%6、图像附加功能
grid on;%添加栅格
title('图像标题');%设置标题
%view(135,30) %设置3D视角的角度
%view(2)%设置2D视角
%set(gca,'XDir','reverse') %翻转X轴
%set(gca,'YDir','reverse') %翻转Y轴
%axis equal%刻度处理
%axis ([0 30 0 30]);%刻度处理
%set(gca,'FontSize',22,'FontWeight','bold');% 翻转轴
%legend('*****','****');%添加图例