在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

我有一个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  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');好的,很好。你对这个多边形的显示方式不满意吗?还是从文件中读取所有点时出现问题?还是穿过所有的行?