Effacer les filtres
Effacer les filtres

Point not match and connect with the nearest point to line

2 vues (au cours des 30 derniers jours)
TAN SAK JIE
TAN SAK JIE le 27 Mai 2021
Modifié(e) : TAN SAK JIE le 30 Mai 2021
Point not match and connect with the nearest point to line
The data I exported from the ANSYS FLUENT...and when i plot it the line is not follow the black dot but connect in the zig zag direction.. Any one can fix it :(
I wish to know how to rearrange the data so that the i can match the nearest black dot to plot a line in order to erase the unwanted data
  5 commentaires
Jan
Jan le 28 Mai 2021
This is not trivial. If the point is preferred, which changes the direction of the former trajectory as small as possible, then the corner at x=0.25 will be a problem:
So you need a smart algorithm, which considers the nearest point, if it is near enough, but decides for another point, if the trajectory is straight enough. For 2D and 3D surfaces Matlab offers the alphaShape , but I do not know the command for a line.
How are the positions of the dots calculated? The creator does not know, that this is a connected graph. Otherwise it should be trivial to output the coordinates in the correct order directly.
Image Analyst
Image Analyst le 28 Mai 2021
Are you willing to simply hand draw a dividing line through the right and left portions?

Connectez-vous pour commenter.

Réponse acceptée

Jan
Jan le 28 Mai 2021
Modifié(e) : Jan le 28 Mai 2021
To my surprise finding the nearest point iteratively solves the problem already:
[x,y] = nearestConnection(a.Topwall(:,2), a.Topwall(:,3));
plot(x, y)
function [xa, ya, index] = nearestConnection(x, y)
xa = zeros(size(x));
ya = zeros(size(y));
index = zeros(size(x));
% Find the initial point defined by the smallest X value:
[~, idx0] = min(x);
xa(1) = x(idx0);
ya(1) = y(idx0);
index(1) = idx0;
x(idx0) = NaN; % Mask original point
y(idx0) = NaN;
for k = 2:numel(x)
dist = (x - xa(k - 1)) .^ 2 + (y - ya(k - 1)) .^ 2;
[~, idx] = min(dist);
index(k) = idx;
xa(k) = x(idx);
ya(k) = y(idx);
x(idx) = NaN;
y(idx) = NaN;
end
end

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by