matlab 距離函式

2021-06-28 07:50:36 字數 3504 閱讀 1153

判別分析時,通常涉及到計算兩個樣本之間的距離,多元統計學理論中有多種距離計算公式。matlab中已有對應函式,可方便直接呼叫計算。距離函式有:pdist,pdist2, mahal, squareform, mdscale, cmdscale

主要介紹pdist2 ,其它可參考matlab help

d = pdist2(x,y)

d = pdist2(x,y,distance)

d = pdist2(x,y,'minkowski',p)

d = pdist2(x,y,'mahalanobis',c)

d = pdist2(x,y,distance,'smallest',k)

d = pdist2(x,y,distance,'largest',k)

[d,i] = pdist2(x,y,distance,'smallest',k)

[d,i] = pdist2(x,y,distance,'largest',k)

練習:2種計算方式,一種直接利用pdist計算,另一種按公式(見最後理論)直接計算。

% distance

clc;clear;

x = rand(4,3)

y = rand(1,3)

for i =1:size(x,1)

for j=1:size(y,1)

a = x(i,:); b=y(j,:);

% euclidean distance

d1(i,j)=sqrt((a-b)*(a-b)');

% standardized euclidean distance

v = diag(1./std(x).^2);

d2(i,j)=sqrt((a-b)*v*(a-b)');

% mahalanobis distance

c = cov(x);

d3(i,j)=sqrt((a-b)*pinv(c)*(a-b)');

% city block metric

d4(i,j)=sum(abs(a-b));

% minkowski metric

p=3;

d5(i,j)=(sum(abs(a-b).^p))^(1/p);

% chebychev distance

d6(i,j)=max(abs(a-b));

% cosine distance

d7(i,j)=1-(a*b')/sqrt(a*a'*b*b');

% correlation distance

ac = a-mean(a); bc =b-mean(b); 

d8(i,j)=1- ac*bc'/(sqrt(sum(ac.^2))*sqrt(sum(bc.^2)));

endendmd1 = pdist2(x,y,'euclidean');

md2 = pdist2(x,y,'seuclidean');

md3 = pdist2(x,y,'mahalanobis');

md4 = pdist2(x,y,'cityblock');

md5 = pdist2(x,y,'minkowski',p);

md6 = pdist2(x,y,'chebychev');

md7 = pdist2(x,y,'cosine');

md8 = pdist2(x,y,'correlation');

md9 = pdist2(x,y,'hamming');

md10 = pdist2(x,y,'jaccard');

md11 = pdist2(x,y,'spearman');

d1=[d1,md1],d2=[d2,md2],d3=[d3,md3]

d4=[d4,md4],d5=[d5,md5],d6=[d6,md6]

d7=[d7,md7],d8=[d8,md8]

md9,md10,md11

執行結果如下:

x =0.5225 

0.6382 

0.6837

0.3972 

0.5454 

0.2888

0.8135 

0.0440 

0.0690

0.6608 

0.5943 

0.8384

y =0.5898 

0.7848 

0.4977

d1 =

0.2462 

0.2462

0.3716 

0.3716

0.8848 

0.8848

0.3967 

0.3967

d2 =

0.8355 

0.8355

1.5003 

1.5003

3.1915 

3.1915

1.2483 

1.2483

d3 =

439.5074  439.5074

437.5606  437.5606

438.3339  438.3339

437.2702  437.2702

d4 =

0.3999 

0.3999

0.6410 

0.6410

1.3934 

1.3934

0.6021 

0.6021

d5 =

0.2147 

0.2147

0.3107 

0.3107

0.7919 

0.7919

0.3603 

0.3603

d6 =

0.1860 

0.1860

0.2395 

0.2395

0.7409 

0.7409

0.3406 

0.3406

d7 =

0.0253 

0.0253

0.0022 

0.0022

0.3904 

0.3904

0.0531 

0.0531

d8 =

1.0731 

1.0731

0.0066 

0.0066

1.2308 

1.2308

1.8954 

1.8954

md9 =11

11md10 =11

11md11 =

1.5000

0.0000

1.5000

2.0000

基本理**式如下:

Matlab 距離變換

距離變換 是對二值影象的一種操作運算 它將一幅二值影象轉化為一幅灰度影象 在這幅灰度影象中 每個畫素的灰度級是該畫素與距其最近的背景間的距離 從理論上講 要計算乙個畫素點到背景畫素點的 最短距離 需要對影象進行全域性操作運算 即計算此畫素點與所有背景畫素點的距離 再取最小值 除非這 幅數字影象的尺寸...

MATLAB的dist函式用法及歐式距離

1 dist函式 dist函式就是歐式距離加權函式 dist w,p 中 w s r的權值矩陣 p r q的矩陣,表示q個輸入 列 向量 例 a 1 2 3 b 4 5 6 dist a,b sqrt 1 4 2 2 5 2 3 6 2 5.1962 參考mathworks裡面的dist函式 後續更...

Matlab計算矩陣間距離

夜深人靜時分,宿舍就我自己,只有蚊子陪伴著我,我慢慢碼下這段文字.我們倆交流了很多.從實驗室,到研究課題,到lol,筆者深深為他淵博的學識和不俗的談吐所打動,恩恩,遇到志同道合的人挺不容易的.最重要的是感謝他的開源精神,給我了很多我急需的資料和 在此,也感謝提供的這個平台,讓我們在這茫茫人海中有了相...