필터 지우기
필터 지우기

Use inpolygon command for multiple polygon areas

조회 수: 9 (최근 30일)
Tessa Kol
Tessa Kol 2020년 9월 18일
댓글: Tessa Kol 2020년 9월 19일
Dear all,
I have some difficulty with assigning points into multiple square polygons. I have data files containing (x,y,z) coordinates of every particle. With the command inpolygon I locate the particles that are inside a specified polygon:
%% Loading the data
rhoPart = 2540;
files = dir(fullfile(uigetdir,'*.data*'));
[~,Index] = natsort({files.name});
files = files(Index);
expData = cell(length(files),1);
k = 1;
for i = 1:length(files)
fid = fopen(fullfile(files(i).folder,files(i).name),'r');
%% Reading the data
% Read all the data from the file
dataRead = textscan(fid,'%f %f %f %f %f %f %f %f %f %f %f %f %f %f','HeaderLines',1);
frewind(fid);
% Write headerline N, time, xmin, ymin, zmin, xmax, ymax, zmax
runData{k} = strsplit(fgetl(fid), ' ');
% Write only the x, y, and z components of the particles, particle radius,
% z component+ particle radius and volume of the particle
expData{k} = [dataRead{1}(:,1) dataRead{2}(:,1) dataRead{3}(:,1) dataRead{7}(:,1) dataRead{3}(:,1)+dataRead{7}(:,1) rhoPart*(4/3)*pi*(dataRead{7}(:,1).^3)];
% Write only the vx,vy,vz of the particles and magnitude
velData{k} = [dataRead{4}(:,1) dataRead{5}(:,1) dataRead{6}(:,1) sqrt(dataRead{4}(:,1).^2 + dataRead{5}(:,1).^2 + dataRead{6}(:,1).^2)];
fclose(fid);
k = k + 1;
end
%% Classify (into a structure)
% Number of simulation runs
N_run = 1;
% Number of .data files to be extracted of every simulation run
N_files = 2745;
k = 1;
for i = 1:N_run
for j = 1:N_files
runData_r{j,i} = str2double(runData{k});
expData_r{j,i} = expData{k};
velData_r{j,i} = velData{k};
k = k + 1;
end
end
% Polygon
xc = expData_r{1800,1}(:,1);
zc = expData_r{1800,1}(:,1);
xv = [-0.0184 -0.0061 -0.0061 -0.0184 -0.0184];
zv = [0.2857 0.2857 0.2755 0.2755 0.2857];
in = inpolygon(xc,zc,xv,zv);
figure
plot(xv,zv,'LineWidth',2)
hold on
plot(xc(in),zc(in),'r+')
I get the following results:
But I want to do this procedure for a whole mesgrid. Thus, locate the particles of every gridbin (i.e. multiple polygons). How can I do that?

채택된 답변

KSSV
KSSV 2020년 9월 18일
  댓글 수: 8
KSSV
KSSV 2020년 9월 18일
Why do you think the indices are wrong?
Tessa Kol
Tessa Kol 2020년 9월 19일
Everything is solved by now. I succesfully made a quiver plot. Thank you for you help!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Matt J
Matt J 2020년 9월 18일
편집: Matt J 2020년 9월 18일
Use discretize(),
Apply it separately to all of your xv's and then on all your zv's.

카테고리

Help CenterFile Exchange에서 Elementary Polygons에 대해 자세히 알아보기

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by