sort and group vectors in a matrix

7 Ansichten (letzte 30 Tage)
Avik Mahata
Avik Mahata am 17 Nov. 2021
Beantwortet: Star Strider am 17 Nov. 2021
I have two matrices of a size of 125x3. Lets say matrix X and Y. I am calculating cartesian distances between X(1,1) with all the rows of Y. So the code looks like below,
L = length(X);
for i=1:L
X(i)= sqrt((X(1,3)-Y(i,3))^2 + (X(1,4)-Y(i,4))^2 + (X(1,5)-Y(i,5))^2);
X = X/10;
B = sort(X);
B = B';
end
I am now trying to get the distances between all of X's elements with Y's element and sort and save them in a bigger matrix of 125x125. So I am trying to create another loop that saves the data in sucessive columns, but somehow I am not able to do that.

Antworten (1)

Star Strider
Star Strider am 17 Nov. 2021
This is a bit confusing.
I would use the pdist2 function for this —
x = rand(1,5);
y = rand(10,5);
X = x(3:5)
X = 1×3
0.1281 0.5614 0.6284
Y = y(:,3:5);
D = pdist2(X, Y)
D = 1×10
0.4898 0.7704 0.8340 0.3424 1.0069 0.6262 0.5756 0.9131 0.5587 0.3489
[Dsort,I] = sort(D(:))
Dsort = 10×1
0.3424 0.3489 0.4898 0.5587 0.5756 0.6262 0.7704 0.8340 0.9131 1.0069
I = 10×1
4 10 1 9 7 6 2 3 8 5
The sort call sorts the vectors and returns the sorted vector and the original indices of the corresponding element.
I do not see where a matrix of distances would be used here, because this compares one vector to a matrix. A matrix would be appropriate for comparing two matrices, as described in Compute Euclidean Distance.
.

Kategorien

Mehr zu Shifting and Sorting Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by