zoukankan      html  css  js  c++  java
  • MATLAB(5)——生成归一化直方图

    作者:桂。

    时间:2017-03-10  22:13:36

    链接:http://www.cnblogs.com/xingshansi/p/6533579.html 

    声明:欢迎转载,不过记得注明出处哦~


    前言

    本文作为:曲线拟合与分布拟合 一文的补充内容,主要介绍MATLAB直方图的绘制,以及对应归一化直方图的实现。全文分三部分简单介绍:

      1)直方图(hist)绘制;

      2)栅栏图(bar)绘制;

      3)归一化直方图实现。

     

     

     

     

     

    一、直方图(hist)

    可以对hist的直方图进行限定,两种途径:个数模式(nbins)/区间模式(numter)  

      A-个数模式

    nbins:指定直方图区间个数。

    给出代码:

    rng('default') % for reproducibility
    x = 3*randn(3000,1)-2;
    nbins = 50;
    hist(x, nbins);
    grid on;
    

      结果图:

      B-区间模式

    numter:[start:interval:end].

    给出代码:

    rng('default') % for reproducibility
    x = 3*randn(3000,1)-2;
    numter = [-20:.2:20];
    hist(x, numter);
    grid on;
    

      对应结果图:

    此外,hist的输出结果有两个(三种方式均可):

    [histFreq, histXout]=hist(x);
    [histFreq, histXout]=hist(x, nbins);
    [histFreq, histXout]=hist(x, numter);
    

      给出一个演示代码:

    rng('default') % for reproducibility
    x = 3*randn(3000,1)-2;
    nbins = 50;
    [histFreq, histXout]=hist(x, nbins);
    subplot 311
    hist(x,nbins);grid on;
    subplot 312
    plot(histXout,histFreq,'r','linewidth',2);
    grid on;
    
    subplot 313
    hist(x,nbins);hold on;
    plot(histXout,histFreq,'r','linewidth',2);
    grid on;
    

      对应结果图:

    可以看到,对于结果:[histFreq, histXout] —>histXout:横坐标;histFreq:纵坐标。

    二、栅栏图(bar)

    关于bar,只提及一点,给出代码:

    x = 1900:10:2000;
    y = [75.995,91.972,105.711,123.203,131.669,...
         150.697,179.323,203.212,226.505,249.633,281.422];
    figure; 
    subplot 211
    bar(y);grid on;
    subplot 212
    bar(x,y);grid on;
    

      结果图:

    即bar可以指定横轴坐标以及纵轴坐标。

    三、归一化直方图

    借助hist的输出,以及bar的特性,我们可以生成归一化直方图,思路:

    • 步骤一:求解每一个bin的区间宽度:binWidth = histXout(2)-histXout(1);
    • 步骤二:求解所有bin的面积:binWidth/sum(histFreq)
    • 步骤三:求解面积归一化后的高度(宽度保持不变):histFreq/binWidth/sum(histFreq)

    直方图归一化的代码:

    rng('default') % for reproducibility
    x = 3*randn(3000,1)-2;
    numOfBins = 100;
    % [histFreq, histXout] = hist(x, numOfBins);
    numter = [-20:.2:20];
    [histFreq, histXout] = hist(x, numter);
    binWidth = histXout(2)-histXout(1);
    %Bar
    figure;
    subplot 311
    bar(histXout, histFreq/binWidth/sum(histFreq)); hold on;grid on;
    

      这样一来,我们对分布拟合,便可以更直观地观察直方图分布与拟合结果的关系:

  • 相关阅读:
    life
    Android通过XML来定义Menu
    Android通过XML来定义Menu
    Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)
    作为股权类投资人,我们的投资偏好和投资原则
    作为股权类投资人,我们的投资偏好和投资原则
    给TextView添加超链接的四种方式
    详解ExplosionField的使用,实现View的粉碎效果
    MySql中允许远程连接
    我的投资案例(3)-看好互联网和金融两大朝阳行业,参投入股垂直金融招聘平台"职业梦CareerDream.cn"
  • 原文地址:https://www.cnblogs.com/xingshansi/p/6533579.html
Copyright © 2011-2022 走看看