How to measure the similarity of two data

后端 未结 2 875
天命终不由人
天命终不由人 2021-01-29 12:06

I am measuring the similarity of two data with same size is 20. That is

A=[0.915450999999999    0.908220499999997   0.900374999999996   0.890547499999996   0.88         


        
2条回答
  •  天命终不由人
    2021-01-29 12:39

    The best solution in MATLAB to calculate the distance between vectors is the pdist method:

    http://www.mathworks.com/help/stats/pdist.html

    It can use several metrics and it is quite well optimized. In the documantation these metrics are described very well.

    pdist compares all rowvectors with all rowvectors in a matrix and returns all of these distances. For two vectors you have to put them in a matrix and you have to call pdist method using this matrix as input argument:

    % A and B are the vectors of your example
    X = [A; B];
    D = pdist(X, 'cosine'); % D = 1.0875e-005
    

    If you call pdist with a matrix with more lines the output will be a vector as well. For example:

    % A and B are the vectors of your example
    X = [A; A; B; B];
    D = pdist(X, 'cosine');
    % D = 1.0e-004 * [0    0.1087    0.1087    0.1087    0.1087    0.0000]
    

    D(1) is A compared with A (1st row with 2nd row).

    D(2) is A compared with B (1st row with 3rd row).

    D(3) is A compared with B (1st row with 4th row).

    D(4) is A compared with B (2nd row with 3rd row).

    D(5) is A compared with B (2nd row with 4th row).

    D(6) is B compared with B (3rd row with 4th row).

    Few years ago we implemented a simulation environment where several vectors inherit from a virtual line-scan camera are compared, and we used this method. It works perfectly.

提交回复
热议问题