我有一个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
结果情节应该像这样说:
答案 0 :(得分:2)
您可以使用xlsread
功能阅读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