⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parzen.m

📁 Parzen窗法
💻 M
字号:
% Parzen窗法,使用教材中的例子
function Parzen()
    clear;
     
    % 教材中a图,均值为零、方差为1的一维正态分布
    x = linspace(-2, 2, 100);
    X = norm_a(256);
    p = Parzen_norm(x, X, 0.25, 1);     subplot(4,6,1);plot(x, p);title('N =1, h_{1} = 0.25');axis([-2, 2, 0, 1]);
    p = Parzen_norm(x, X, 1, 1);        subplot(4,6,2);plot(x, p);title('N =1, h_{1} = 1');axis([-2, 2, 0, 1]);
    p = Parzen_norm(x, X, 4, 1);        subplot(4,6,3);plot(x, p);title('N =1, h_{1} = 4');axis([-2, 2, 0, 1]);
    p = Parzen_norm(x, X, 0.25, 16);    subplot(4,6,7);plot(x, p);title('N =16, h_{1} = 0.25');axis([-2, 2, 0, 1]);
    p = Parzen_norm(x, X, 1, 16);       subplot(4,6,8);plot(x, p);title('N =16, h_{1} = 1');axis([-2, 2, 0, 1]);
    p = Parzen_norm(x, X, 4, 16);       subplot(4,6,9);plot(x, p);title('N =16, h_{1} = 4');axis([-2, 2, 0, 1]);
    p = Parzen_norm(x, X, 0.25, 256);   subplot(4,6,13);plot(x, p);title('N =256, h_{1} = 0.25');axis([-2, 2, 0, 1]);
    p = Parzen_norm(x, X, 1, 256);      subplot(4,6,14);plot(x, p);title('N =256, h_{1} = 1');axis([-2, 2, 0, 1]);
    p = Parzen_norm(x, X, 4, 256);      subplot(4,6,15);plot(x, p);title('N =256, h_{1} = 4');axis([-2, 2, 0, 1]);
    p = normpdf(x, 0, 1);               
    subplot(4,6,19);plot(x, p);axis([-2, 2, 0, 1]);
    subplot(4,6,20);plot(x, p);title('均值为零、方差为1的一维正态分布');axis([-2, 2, 0, 1]);
    subplot(4,6,21);plot(x, p);axis([-2, 2, 0, 1]);
    
    % 教材中b图,均匀分布双峰概密
    x = linspace(-3, 3, 100);
    X = equal_b(256);
    p = Parzen_norm(x, X, 0.25, 1);     subplot(4,6,4);plot(x, p);title('N =1, h_{1} = 0.25');axis([-3, 3, 0, 1.5]);
    p = Parzen_norm(x, X, 1, 1);        subplot(4,6,5);plot(x, p);title('N =1, h_{1} = 1');axis([-3, 3, 0, 1.5]);
    p = Parzen_norm(x, X, 4, 1);        subplot(4,6,6);plot(x, p);title('N =1, h_{1} = 4');axis([-3, 3, 0, 1.5]);
    p = Parzen_norm(x, X, 0.25, 16);    subplot(4,6,10);plot(x, p);title('N =16, h_{1} = 0.25');axis([-3, 3, 0, 1.5]);
    p = Parzen_norm(x, X, 1, 16);       subplot(4,6,11);plot(x, p);title('N =16, h_{1} = 1');axis([-3, 3, 0, 1.5]);
    p = Parzen_norm(x, X, 4, 16);       subplot(4,6,12);plot(x, p);title('N =16, h_{1} = 4');axis([-3, 3, 0, 1.5]);
    p = Parzen_norm(x, X, 0.25, 256);   subplot(4,6,16);plot(x, p);title('N =256, h_{1} = 0.25');axis([-3, 3, 0, 1.5]);
    p = Parzen_norm(x, X, 1, 256);      subplot(4,6,17);plot(x, p);title('N =256, h_{1} = 1');axis([-3, 3, 0, 1.5]);
    p = Parzen_norm(x, X, 4, 256);      subplot(4,6,18);plot(x, p);title('N =256, h_{1} = 4');axis([-3, 3, 0, 1.5]);
    p = double_equal(x);               
    subplot(4,6,22);plot(x, p);axis([-3, 3, 0, 1.5]);
    subplot(4,6,23);plot(x, p);title('均匀分布双峰概密');axis([-3, 3, 0, 1.5]);
    subplot(4,6,24);plot(x, p);axis([-3, 3, 0, 1.5]);
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%   function name:  norm_a
%   description:    产生教材中a图例子的样本,即均值为零、方差为1的一维正态分布
%   input variable: N(样本个数)
%   output variable:X(样本矩阵,N by 1)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function X = norm_a(N)
    X = normrnd(0, 1, N, 1);
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%   function name:  equal_b
%   description:    产生教材中b图例子的样本,即均匀分布双峰概密
%   input variable: N(样本个数)
%   output variable:X(样本矩阵,N by 1)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function X = equal_b(N)
    f = rand(N, 1);
    X = zeros(N, 1);
    for i = 1:N
        if f(i)<0.5
            X(i) = f(i) - 2.5;
        else
            X(i) = 4 * f(i) - 2;
        end
    end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%   function name:  double_equal
%   description:    教材中b图例子的的概率密度曲线,即均匀分布双峰概密
%   input variable: x(横坐标)
%   output variable:p(概率密度,纵坐标)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function p = double_equal(x)
    for i = 1:100
        if ( -2.5<x(i)) & ( x(i)<-2 )
            p(i) = 1;
        elseif ( 0<x(i)) & ( x(i)<2 )
            p(i) = 0.25;            
        else
            p(i) = 0;
        end
    end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%   function name:  Parzen_norm
%   description:    用正态窗函数作Parzen窗估计
%   input variable: x(横坐标), X(样本), h1, N
%   output variable:p(估计,纵坐标)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function p = Parzen_norm(x, X, h1, N)
    hN = h1 / sqrt(N);
    sum = zeros(1, 100);
    for i = 1:N
        sum = sum + normpdf((x - X(i))/hN, 0, 1);
    end
    p = sum/(N * hN);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -