フィルターのクリア

Matrix dimensions for Euclidean Distance

6 ビュー (過去 30 日間)
Bisma Waheed
Bisma Waheed 2018 年 3 月 25 日
コメント済み: Antonio Argentieri 2020 年 8 月 22 日
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 件のコメント
Bisma Waheed
Bisma Waheed 2018 年 3 月 25 日
And the inputs x and y come from 2 different functions used in my code.I have attached the code. You have to run main.m
Bisma Waheed
Bisma Waheed 2018 年 3 月 25 日
Error: Matrix dimensions must agree.
Error in disteu (line 50) d(:,p) = sum((x - y(:, p+copies)) .^2, 1)';
Error in test (line 21) d = disteu(v, code{l});
Error in main (line 5) test('C:\Users\Bisma Waheed\Desktop\pncc\pncc plus mfcc\mfcc_vq\test2\',5, code);

サインインしてコメントする。

採用された回答

Matt J
Matt J 2018 年 3 月 25 日
編集済み: Matt J 2018 年 3 月 25 日
Rather than debugging disteu, I invite you to use my own implementation (attached). The help doc should be pretty straightforward.
  4 件のコメント
Bisma Waheed
Bisma Waheed 2018 年 3 月 25 日
I am still getting an error quite similar to the previous one, Error using reshape Product of known dimensions, 314, not divisible into total number of elements, 5360.
Error in disteu (line 37) y=reshape(y,N,1,[]);
Error in test (line 21) d = disteu(v, code{l});
Antonio Argentieri
Antonio Argentieri 2020 年 8 月 22 日
Hi, I have the same error, have you solved this problem?
Thanks.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSequence and Numeric Feature Data Workflows についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by