- Please post a copy of the complete error message. This would reveal, which line is failing.
- What are the inputs x and y in your case?
- sqrt(x) is faster than x.^0.5.
- Since Matlab R2016b you can omit the "+copies".
Matrix dimensions for Euclidean Distance
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Bisma Waheed
am 25 Mär. 2018
Kommentiert: Antonio Argentieri
am 22 Aug. 2020
I am working on project "Speaker Recognition using PNCC and MFCC". For recognition I have to do matching step . For which I have to compare the feature matrix of test voice sample with the feature matrix of the rest of the voice samples. Matching is done using euclidean distance between the test sample and the samples in database. For MFCC my code works correctly. However, for PNCC the code might seem to change the dimensions and an error: "Matrix dimensions must agree" is generated. My question is that how to find the euclidean distance with different dimensions or how to change the dimensions such that my results are not affected.
My CODE:
function d = disteu(x, y)
% DISTEU Pairwise Euclidean distances between columns of two matrices
%
% Input:
% x, y: Two matrices whose each column is an a vector data.
%
% Output:
% d: Element d(i,j) will be the Euclidean distance between two
% column vectors X(:,i) and Y(:,j)
%
% Note:
% The Euclidean distance D between two vectors X and Y is:
% D = sum((x-y).^2).^0.5
% D = sum((x-y).^2).^0.5
[M, N] = size(x);
[M2, P] = size(y);
if (M ~= M2)
error('Matrix dimensions do not match.')
end
d = zeros(N, P);
if (N < P)
copies = zeros(1,P);
for n = 1:N
d(n,:) = sum((x(:, n+copies) - y) .^2, 1);
end
else
copies = zeros(1,N);
for p = 1:P
d(:,p) = sum((x - y(:, p+copies)) .^2, 1)';
end
end
d = d.^0.5;
4 Kommentare
Akzeptierte Antwort
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Sequence and Numeric Feature Data Workflows 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!