在matlab中绘制每行的多边形
我有一个Excel文件,如下所示。每行包含多个点(x,y)。根据每行中的点数,我想在MATLAB中为每行绘制多边形。这是如何工作的 对于一行,我做了以下操作:在matlab中绘制每行的多边形,matlab,Matlab,我有一个Excel文件,如下所示。每行包含多个点(x,y)。根据每行中的点数,我想在MATLAB中为每行绘制多边形。这是如何工作的 对于一行,我做了以下操作: x=[49.2 49.2 50.081 50 49.2 ]; y=[36.8 37 36.86 36.594 36.8 ]; patch(x,y,'g'); 但我不知道如何读取文件中的所有行并为每行创建补丁 我的Excel文件如下所示: x y x y,... 49.4 35.583
x=[49.2 49.2 50.081 50 49.2 ];
y=[36.8 37 36.86 36.594 36.8 ];
patch(x,y,'g');
但我不知道如何读取文件中的所有行并为每行创建补丁
我的Excel文件如下所示:
x y x y,...
49.4 35.583 49.424 35.828 51.02 35.766 50.9 35.52 49.4 35.583
50.933 36.836 50.931 36.586 52.224 36.163 52.21 36.527 50.933 36.836
50.23 36.168 51.232 36.164 51.779 35.977 51.72 35.68 51.02 35.766 50.23 36.168
生成的绘图应如下所示:
x y x y,...
49.4 35.583 49.424 35.828 51.02 35.766 50.9 35.52 49.4 35.583
50.933 36.836 50.931 36.586 52.224 36.163 52.21 36.527 50.933 36.836
50.23 36.168 51.232 36.164 51.779 35.977 51.72 35.68 51.02 35.766 50.23 36.168
您可以使用该函数读取Excel文件。还可以提供图纸名称和范围,例如
X = xlsread('myFile.xls', 'Sheet 1', 'B1:D5');
但是,这是可选的。要读取文件第一页的所有内容,只需使用
X = xlsread('myFile.xls');
注意:这只返回数字数据,因此标题将自动删除。因此,您将拥有一个包含所有行的矩阵X
。这样我们就可以开始绘图了。我们首先显示背景图像,然后在矩阵的所有行中执行for循环:
% Show background image
figure(1);
imshow(yourBackgroundImage);
% Specify different colors (taken from https://mathworks.com/matlabcentral/answers/8558-plot-different-colors-while-using-loops)
% Note: you need as many entries / colors in this cell array as you have rows in your file!
C = {'k','b','r','g','y',[.5 .6 .7],[.8 .2 .6]}
% Go through all rows
for k=1:size(X,1)
% Take k-th row and reshape it so x is on first row and y on second row
y = reshape(X(k,:), 2, []);
% Draw polygon with no FaceColor (i.e. not filled)
patch(y(1,:), y(2,:), 'b', 'EdgeColor', C{k}, 'FaceColor', 'None');
end
您可以使用该函数读取Excel文件。还可以提供图纸名称和范围,例如
X = xlsread('myFile.xls', 'Sheet 1', 'B1:D5');
但是,这是可选的。要读取文件第一页的所有内容,只需使用
X = xlsread('myFile.xls');
注意:这只返回数字数据,因此标题将自动删除。因此,您将拥有一个包含所有行的矩阵X
。这样我们就可以开始绘图了。我们首先显示背景图像,然后在矩阵的所有行中执行for循环:
% Show background image
figure(1);
imshow(yourBackgroundImage);
% Specify different colors (taken from https://mathworks.com/matlabcentral/answers/8558-plot-different-colors-while-using-loops)
% Note: you need as many entries / colors in this cell array as you have rows in your file!
C = {'k','b','r','g','y',[.5 .6 .7],[.8 .2 .6]}
% Go through all rows
for k=1:size(X,1)
% Take k-th row and reshape it so x is on first row and y on second row
y = reshape(X(k,:), 2, []);
% Draw polygon with no FaceColor (i.e. not filled)
patch(y(1,:), y(2,:), 'b', 'EdgeColor', C{k}, 'FaceColor', 'None');
end
你在谷歌上搜索过“matlab绘制多边形”吗?是的,但任何工作都不能。请编辑你的问题以显示你尝试过的代码,并解释到底什么不起作用。例如,一行[k,l]=大小(p);x=[49.249.250.0815049.2];y=[36.83736.8636.59436.8];补片(x,y,'g');好的,很好。你对这个多边形的显示方式不满意吗?还是从文件中读取所有点时出现问题?或者浏览所有行?你搜索过“matlab绘制多边形”吗?是的,但任何工作都不能。请编辑你的问题以显示你尝试过的代码,并解释到底什么不起作用。例如,一行[k,l]=大小(p);x=[49.249.250.0815049.2];y=[36.83736.8636.59436.8];补片(x,y,'g');好的,很好。你对这个多边形的显示方式不满意吗?还是从文件中读取所有点时出现问题?还是穿过所有的行?