📄 disteusq.m
字号:
function d=disteusq(x,y,mode,w)
% DISTEUSQ 蜡努府叼救, 磊铰 蜡努府叼救 趣篮 付窍唱畴厚胶 芭府甫 拌魂茄促. D=(X,Y,MODE,W)
%
% 涝仿 牢磊:
% X,Y 厚背瞪 氦磐笼钦. 阿 凯捞 单捞磐 氦磐肺 登绢 乐促.
% X客 Y绰 鞍篮 荐狼 青阑 啊柳促.
%
% MODE 可记 荤亲 急琶 巩磊凯:
% 'x' 葛电 X客 Y狼 凯俊辑 傈眉 芭府 青纺 拌魂.
% 'd' 包访等 X客 Y狼 凯埃狼 芭府父 拌魂.
% 父距 X客 Y啊 鞍篮 凯狼 荐甫 啊瘤搁 叼弃飘肺 'd'捞绊 弊犯瘤 臼栏搁 'x'.
% 's' 蜡努府叼救 芭府 搬苞狼 磊铰辟阑 秒茄促.
%
% W 可记 啊吝摹 青纺: 拌魂等 芭府绰 (x-y)*W*(x-y)'
% 父距 W啊 氦磐捞搁 青纺 diag(W)啊 荤侩等促.
%
% 免仿 牢磊:
% D 父距 MODE='d'捞搁 D绰 X客 Y焊促 累篮 鞍篮 荐狼 凯阑 啊柳 青 氦磐捞促.
% 父开 MODE='x'捞搁 D绰 X客 鞍篮 荐狼 凯苞 Y'客 鞍篮 荐狼 青阑 啊柳 青纺捞促.
%
% VOICEBOX 傍俺家胶 荐沥
% VOICEBOX home page: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html
%
[nx,p]=size(x); ny=size(y,1);
if nargin<3 | isempty(mode) mode='0'; end
if any(mode=='d') | (mode~='x' & nx==ny)
nx=min(nx,ny);
z=x(1:nx,:)-y(1:nx,:);
if nargin<4
d=sum(z.*conj(z),2);
elseif min(size(w))==1
wv=w(:).';
d=sum(z.*wv(ones(size(z,1),1),:).*conj(z),2);
else
d=sum(z*w.*conj(z),2);
end
else
if p>1
if nargin<4
z=permute(x(:,:,ones(1,ny)),[1 3 2])-permute(y(:,:,ones(1,nx)),[3 1 2]);
d=sum(z.*conj(z),3);
else
nxy=nx*ny;
z=reshape(permute(x(:,:,ones(1,ny)),[1 3 2])-permute(y(:,:,ones(1,nx)),[3 1 2]),nxy,p);
if min(size(w))==1
wv=w(:).';
d=reshape(sum(z.*wv(ones(nxy,1),:).*conj(z),2),nx,ny);
else
d=reshape(sum(z*w.*conj(z),2),nx,ny);
end
end
else
z=x(:,ones(1,ny))-y(:,ones(1,nx)).';
if nargin<4
d=z.*conj(z);
else
d=w*z.*conj(z);
end
end
end
if any(mode=='s')
d=sqrt(d);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -