How to extract the data using inpolygon function ?

6 ビュー (過去 30 日間)
aa
aa 2021 年 1 月 25 日
コメント済み: aa 2021 年 1 月 25 日
Hi everyone,
May some one help me here ...
I have data in three colums. (1) x-coordinate; (2) y-coordinate; and (3) z-value (parametere) of data length (55000 data points: I reduce the file size due to limit of 5 MB) I required to extarct the z-values lying inside the polygon.
My scripit did not work for the above mentioned purpose. May someone help me how to handle this data and simple script attched here.
clear all
clc
data=xlsread('Mc_catalog.xlsx');
for i=1:length(data)
x = data(:,1) ; y = data(:,2) ; z = data(:,3 ) ;
xVertices = [-116.8, -116.7, -116.45, -116.7];
yVertices = [33.55, 33.40, 33.70, 33.85];
idx(i) = inpolygon(x(i), y(i), xVertices, yVertices);
iwant(i) = [ z(idx )] ;
end
Thank you.

採用された回答

Cris LaPierre
Cris LaPierre 2021 年 1 月 25 日
Consult the inpolygon documentation page. You can probably do this without the for loop, as inpolygon can query a vector of points at once.
Here is an example from the linked page.
% Define polygon
L = linspace(0,2*pi,6);
xv = cos(L)';
yv = sin(L)';
% Define points to query
xq = randn(250,1);
yq = randn(250,1);
% Find points inside polygon
[in,on] = inpolygon(xq,yq,xv,yv);
% Visualize results
figure
plot(xv,yv) % polygon
axis equal
hold on
plot(xq(in),yq(in),'r+') % points inside
plot(xq(~in),yq(~in),'bo') % points outside
hold off
  3 件のコメント
Cris LaPierre
Cris LaPierre 2021 年 1 月 25 日
This syntax should work. Perhaps data does not have the values you think it does?
Here's how I might visualize the results.
data = readmatrix('data_new.xlsx');
x = data(:,1) ; y = data(:,2) ; z = data(:,3 ) ;
xVertices = [-116.8, -116.7, -116.45, -116.7];
yVertices = [33.55, 33.40, 33.70, 33.85];
idx = inpolygon(x, y, xVertices, yVertices);
iwant = z(idx);
% Visualize
plot3(xVertices,yVertices,zeros(size(xVertices)))
hold on
scatter3(x(idx),y(idx),iwant)
hold off
aa
aa 2021 年 1 月 25 日
Thank you very much this serve for my purpose.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by