parzen窗估密度函数


parzen  窗是一种非参数估计概率密度的方法。已知N数据,不知道它的分布情况,估计它的概率分布
N为样本数量,h为窗长度,φ(·)为核函数(一般采用矩形窗和高斯窗)


function p=Parzen(x,h,N)
%% 方窗  parzen 窗   
f = x(1:1000);
f=sort(f);
b=0;

for i=1:1000
    for j=1:N
        if abs((x(j)-f(i))/h) <= 1/2   %方窗
            q=1;
        else
            q=0;
        end
        b= q+ b;
    end
    a(i)=b;
    b=0;
end

for i=1:1000
    p(i) = 1/(N*h)*a(i);
end
end


function  p =  Parzen1(x,h,N)
%  高斯函数Parzen 窗  统计落在parzen窗内的估计概率
%  x - 符合某种概率密度分布的数据
%  h - 窗长度
%  N -
%
f = x(1:1000);
f=sort(f);
b=0;
h1 =  h/sqrt(N);
for i=1:1000
    for j=1:N
    b= b+ exp(((x(j)-f(i))/h1).^2/(-2))/sqrt(2*pi)/h1;
    end
    p(i) =  b/N;
    b=0;
end
end

clear;clc
%  parzen 方窗    parzen 高斯窗
x=normrnd(0,1,1,10000);

f=sort(x(1:1000));

% N=10   h= 0.25 , 1, 4
p1=Parzen1(x,0.25,10); 
p2 = Parzen1(x,1,10);
p3 = Parzen1(x,4,10);
subplot(331)
plot(f(1:1000),p1)
subplot(332)
plot(f(1:1000),p2)
subplot(333)
plot(f(1:1000),p3)

hold on
% N=100   h= 0.25 , 1, 4
p1=Parzen(x,0.25,100); 
p2 = Parzen(x,1,100);
p3 = Parzen(x,4,100);
subplot(334)
plot(f(1:1000),p1)
subplot(335)
plot(f(1:1000),p2)
subplot(336)
plot(f(1:1000),p3)

hold on
% N=1000   h= 0.25 , 1, 4
p1=Parzen(x,0.25,1000); 
p2 = Parzen(x,1,1000);
p3 = Parzen(x,4,1000);
subplot(337)
plot(f(1:1000),p1)
subplot(338)
plot(f(1:1000),p2)
subplot(339)
plot(f(1:1000),p3)
parzen窗估密度函数_第1张图片

parzen窗估密度函数_第2张图片

你可能感兴趣的:(matlab,模式识别与机器学习)