Entfernung berechnen, da eine Reihe von Koordinaten

meine Frage ist ziemlich trivial, aber ich bin auf der Suche nach der vektorisierter form.

Mein code ist:

HubHt =  110; % Hub Height
GridWidth =  150; % Grid length along Y axis
GridHeight =  150; % Grid length along Z axis
RotorDiameter =  min(GridWidth,GridHeight); % Turbine Diameter
Ny =  31;
Nz =  45;
%% GRID DEFINITION

dy = GridWidth/(Ny-1);
dz = GridHeight/(Nz-1);
if isequal(mod(Ny,2),0)
    iky = [(-Ny/2:-1) (1:Ny/2)];
else
    iky = -floor(Ny/2):ceil(Ny/2-1);
end

if isequal(mod(Nz,2),0)
    ikz = [(-Nz/2:-1) (1:Nz/2)];
else
    ikz = -floor(Nz/2):ceil(Nz/2-1);
end

[Y Z] = ndgrid(iky*dy,ikz*dz + HubHt);

BEARBEITEN

Zurzeit bin ich mit dieser Lösung, die angemessene Leistungen:

coord(:,1) = reshape(Y,[numel(Y),1]);
coord(:,2) = reshape(Z,[numel(Z),1]);
dist_y = bsxfun(@minus,coord(:,1),coord(:,1)');
dist_z = bsxfun(@minus,coord(:,2),coord(:,2)');
dist = sqrt(dist_y.^2 + dist_z.^2);
  • Ich habe gerade bearbeitete meine Frage wieder. Mal ehrlich, es war offensichtlich ein Fehler in der vorherigen Ausgabe der Frage nach, wie ich die definieren wollen Abstand.
  • richtig ist, pdist2 korrekt ist. link aus der docs, die es behauptet zu finden, die den paarweisen Abstand zwischen den einzelnen Elementen von 2-Matrizen
  • pdist2 ist absolut nicht die Antwort: ich will nicht zur Berechnung der Entfernung zwischen zwei Matrizen, aber die Distanz zwischen den Punkten auf dem Gitter, wo Y und Z sind Vertreter der kartesischen Koordinaten von jedem Punkt auf dem Gitter.
  • pdist2 ist absolut die Antwort - ich sage nicht, pdist2(Y, Z) ist anzwer aber pdist2 ist die Funktion. Siehe meine Antwort für was Argumente zu übergeben. Es nicht die Distanz zwischen 2-Matrizen, die es findet, der Abstand zwischen jeden zwei-Punkt-Kombinationen aus zwei Listen von Vektoren, die in Ihrem Fall werden die gleichen 2 sind, die sind nur Y und Z abgeflacht und concatened.
InformationsquelleAutor fpe | 2013-02-18
Schreibe einen Kommentar