Parzen窗法(模式识别_Matlab实现:附具体实现代码)

最近学习了《计算机模式识别》中的Parzen窗法原理,老师也讲到这种方法的实现过程及Matlab代码实现过程(代码由老师提供),在此感谢我的赵宗泽赵老师。下面我将个人的理解写了篇小文章,希望对需要的朋友有所帮助,理解有误或不足之处还望大家及时指出纠正。
Parzen窗法原理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
整个实现过程:
在这里插入图片描述
Matlab实现过程:
显示函数:

clear;clc
%  parzen 方窗    parzen1 高斯窗
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)

方窗函数:

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);
h1 =  h;
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

运行显示结果:
在这里插入图片描述
代码操作说明:
运行之前需要把文件的路径添加到matlab,然后,运行parzen_show.m文件,其他文件都是函数。

发布了16 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_37554556/article/details/89329824