📄 parzen.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Parzen窗函数概率密度估计演示程序1.00 %%%
%%% 国防科技大学四院五队顾巍 %%%
%%% 完全按照《现代模式识别》孙即祥著作 2.4.4《动态聚类法》算法3实现 %%%
%%% 使用欧式距离作为测度标准,本方法使用范例见RunDemo.m %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% funcWnd: 窗函数名。窗函数按照课本中的参数设置定义
% x: 原始数据
% h: 立方体棱长,注意,hn=h/sqrt(n),n是数据样本数目
% sampledX: 采样点,概率密度针对采样点计算
% 返回: 概率密度
function Final = Parzen(funcWnd,x,h,sampledX)
%获得样本维数和样本数目
nSize = size(x);
nDim = nSize(1); %向量维数
nRaw = nSize(2); %样本数目
nSizeSample = size(sampledX);
nDimSameple = nSizeSample(1); %向量维数
nSample = nSizeSample(2); %样本数目
Final.Err = '正确执行'; %返回值:执行结果
Final.Result = 0; %返回值:分类结果和各个样本距类心距离
Final.p = zeros(1,nSample);
%判断合法性
if nDimSameple ~= nDim
Final.Err='对不起,样本维数和采样点维数必须一致';
return;
end
%开始统计样本概率分布
hn = h ./ (nRaw.^.5);
Vn = hn.^nDim;
%分别计算各个采样点处的概率密度
for IndexI = 1:nSample
p = 0;
curSamp = sampledX(:,IndexI)';
for IndexJ = 1:nRaw
curx = x(:,IndexJ)';
p = p + feval(funcWnd,(curx-curSamp)/hn);
end
p=p./Vn;
p=p./nRaw;
Final.p(1,IndexI) = p;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -