0

Also muss ich eine Matrix von x und y Koordinaten erstellen. Ich habe die x in einer Matrix namens vx=0:6000; und y gespeichert in Vy=repmat(300,1,6000); gespeichert.Wie baue ich eine Matrix mit zwei Vektoren?

Werte in x sind 0,1,2,...,5999,6000. Werte in y sind 300,300,...,300,300.

Wie baue ich einen "Vektor" mit den Koordinaten x,y oben?

Es würde so aussehen [(0,300);(1,300);...;(5999,300);(6000,300)].

Nachdem ich das getan habe, werde ich den Abstand zwischen einem anderen Fixpunkt x,y (den ich 6000 mal replizieren will) und dem obigen Vektor finden, um einen Entfernungsgraphen über die Zeit zu machen.

Vielen Dank!

Antwort

4

Sie nur horizontale Verkettung mit []

X = [Vx(:), Vy(:)]; 

verwenden können, wenn Sie den Abstand zwischen einem anderen Punkt und jedem Punkt in diesem 2D-Array berechnen möchten, können Sie folgendes tun:

point = [10, 100]; 
distances = sqrt(sum(bsxfun(@minus, X, point).^2, 2)); 

Wenn Sie R2016b oder neuer haben, können Sie einfach

distances = sqrt(sum((X - point).^2, 2)); 
+0

@ user3105028 Sie verwenden ':' genau wie ich es geschrieben habe. Dies zwingt 'x' und' y' dazu, Spaltenvektoren zu sein. – Suever

+0

>> p1 = [Vx (:), Vy (:)] Fehler bei der Verwendung von horzcat Dimensionen von verketteten Matrizen sind nicht konsistent. – belgarion

+0

@ user3105028 Sie wollen die letzte, die Sie geschrieben haben, aber Sie haben 6001 Elemente in vx und 6000 in vy – Suever

3

Eine etwas elegantere Alternative (meiner Meinung nach) ist die folgende:

Vx = (0:1:6000).'; 
C = [Vx 0*Vx+300]; % Just a trick to avoid the overly verbose `repmat`. 

p = [10,100];  % Define some point of reference. 
d = pdist2(C,p); % The default "distance type" is 'euclidian' - which is what you need. 

Dies verwendet die pdist2 Funktion in MATLAB 2010a eingeführt und erfordert die Statistiken und Machine Learning Toolbox.

Verwandte Themen