精华内容
下载资源
问答
  • 刚好最近做了部分概率密度分布的工作,概率的知识早就还给了高数老师,只好一边复习(约等于学习)概率部分知识,一边扒matlab document。 万物从买买买开始,先推个书。这本数学指南简直太好用了,强烈推荐。手头...

    刚好最近做了部分概率密度分布的工作,概率的知识早就还给了高数老师,只好一边复习(约等于学习)概率部分知识,一边扒matlab document。

    万物从买买买开始,先推个书。这本数学指南简直太好用了,强烈推荐。手头也有其他版本的,天书一样看不懂。

    我假设看到本文的人都跟我一样把知识换给老师,所以我们从头开始吧。

    对于一个随机量  X = x1, x2,... xn

    经验均值      u = mean(X) = (x1+x2+...xn)/n

    经验标准差    (Δx)**2 = std(X) = [(x1-u)**2+(x2-u)**2+...+(xn-u)**2]/(n-1)

    以下不好打字,就用百度百科的截图替代了

    正态分布 (normal distribution) 

     Matlab中,用于计算概率和概率密度的相关函数有histcounts(histogram直方图),ksdensity

    其中,histcounts与histogram是一类,可以计数,计算概率密度,概率密度函数,累积概率密度函数等,通过‘normalization'来选择。hist系列需要给出直方图的根数(nbin),或者直方图的宽度设置(edge,即每根的左右边界),得到的值与nbin一致,比edge少一个。

    ksdensity只用于计算概率密度函数,默认nbin=100,也可给定所需的具体点位pts

    为了对比,我把ksdensity给定的点位设置为hist每根的正中心。

    hist 还可以给出类似discretize的功能,把一列数分类,并给出bin,其中bin的尺寸与x一致,对应位置是x值在哪一类,可以用ismember把属于同一类的数据挑出来。还可以把bin归类,用summary展示,

    clear;clc;close all
    x = randn(100000,1);
    width = 0.2;
    xi = -4:width:4;
    edge = [xi-0.5*width,xi(end)+0.5*width];%   -4-0.5*width:width:4+0.5*width;
    [dens,edge,bin] = histcounts(x,edge,'normalization','pdf');
    [yi,xi]=ksdensity(x,xi);
    figure
    hold on 
    histogram(x,edge,'normalization','pdf')
    plot(xi,dens,'o-')
    plot(xi,yi,'*-')
    legend('histogram','histcounts','ksdensity')
    
    id = ismember(bin,1);
    x(id);
    id = ismember(bin,20);
    a = categorical(bin);
    summary(a)

         0          4 
         1          3 
         2          7 
         3         13 
         4         16 
         5         50 
         6         92 
         7        152 
         8        262 
         9        488 
         10       719 
         11      1145 
         12      1562 
         13      2191 
         14      3038 
         15      3831 
         16      5018 
         17      5920 
         18      6372 
         19      7280 
         20      7712 
         21      7932 
         22      7975 
         23      7457 
         24      6532 
         25      5747 
         26      4847 
         27      3884 
         28      3022 
         29      2211 
         30      1634 
         31      1104 
         32       729 
         33       444 
         34       268 
         35       162 
         36        88 
         37        50 
         38        19 
         39        14 
         40         5 
         41         1 

     

     histcounts 根据设置的区间,根据概念来计算pdf,受数据影响,而ksdensity是给出类似理论概率函数,不太受区间设置影响,并给出对应点的pdf。hist获得的pdf图可能会根据直方图每根条带的宽度设置不同而出现较大的差异,但ksdensity不会,他的pdf是基本一致的。

    我用另外一组实际数据,分别用0.05 0.1 0.2的bar宽度,就可以看到非常明显的区别。

     

     

    展开全文
  • 此函数计算没有长期平均水平的标准均值回复过程与呈现跳跃而非扩散的均值回复过程的傅立叶变换卷积的数值概率密度函数。 从这样的数值概率密度函数可以估计运行标准最大似然程序的参数值。 当对在其分布中呈现峰值并...
  • matlab下有用的函数
  • MATLAB绘制概率密度函数

    万次阅读 2019-09-13 05:45:07
    绘制密度分布 y=rand(100,1)*10;%产生0-10以内的100个随机数 x=linspace(min(x),max(x),10);%产生10个等距数列 yy=hist(y,x);%统计分别落在10个等距区间的数量 %hist(y,20); %绘制20个等间距内数量的直方图 yy=yy/...

    % 1.绘制密度分布
    y=rand(100,1)*10;%产生0-10以内的100个随机数
    x=linspace(min(x),max(x),10);%产生10个等距数列
    yy=hist(y,x);%统计分别落在10个等距区间的数量
    %hist(y,20); %绘制20个等间距内数量的直方图
    yy=yy/length(x);%统计每个区间内占比例,即概率
    bar(x,yy);%绘制直方图

    %2. 核函数平滑函数估计 产生平滑的概率密度函数
    x=10+0.1*randn(100,1);%产生100个符合均值10,标准差0.1d的正态分布的数列
    [f, xi] = ksdensity(x);%核函数平滑函数估计.概率密度估计f
    plot(xi, f)

    %3. 广义极值分布函数Generalized Extreme Value distribution(GEV)
        %极值分布是指在概率论中极大值(或者极小值)的概率分布,从很多个彼此
        %独立的值中挑出来的各个极大值应当服从的概率密度分布数f(x)。

    clc;clear;
    k=0.1;%形状shape参数
    sigma=5;%比例scale参数
    mu=20;%均值loacation参数
    R = gevrnd(k,sigma,mu,100,1);%产生指定参数的GEV随机数列
    hist(R)

    展开全文
  • matlab概率密度函数

    千次阅读 2020-04-02 11:38:19
    Matlab中Ksdensity()函数的用途:(画概率密度函数Matlab中Ksdensity()函数的用途:(画概率密度函数) http://blog.sina.com.cn/s/blog_6399df820100s8md.html [f,xi] = ksdensity(x) 计算样本向量x的概率密度...

    Matlab中Ksdensity()函数的用途:(画概率密度函数)

    Matlab中Ksdensity()函数的用途:(画概率密度函数)
    http://blog.sina.com.cn/s/blog_6399df820100s8md.html

    [f,xi] = ksdensity(x)

    计算样本向量x的概率密度估计,返回在xi点的概率密度f,此时我们使用plot(xi,f)就可以绘制出概率密度曲线。该函数,首先统计样本x在各个区间的概率(与hist有些相似),再自动选择xi,计算对应的xi点的概率密度

    展开全文
  • 该函数制作归一化直方图,即概率密度函数的估计。 直方图的面积等于 1,因为该面积低于理论 PDF 函数。 您可以使用此脚本的输出将经验数据与特定分布的理论 PDF 进行比较。 输入: 数据 - 经验数据bins - 直方图 ...
  • MATLAB数据处理(1)——拟合概率密度函数序言一个简单的例子fit函数fit函数的输入fit函数的输出 序言 最近因为一些工程上的问题需要学习一下matlab数据处理,将包含:数据清洗、小波变换、拟合概率密度函数等内容,...

    MATLAB数据处理(1)——拟合概率密度函数

    序言

    最近因为一些工程上的问题需要学习一下matlab数据处理,将包含:数据清洗、小波变换、拟合概率密度函数等内容,由于网上没有很多相关的教程,并且相关的书籍讲的也比较浅,为了加深自己的学习成果,也为了给后来学习的同学一点帮助,下面将一些学习心得分享给大家。

    一个简单的例子

    我们首先通过一个例子来简单认识一下一个简单的概率分布拟合的过程。
    第一步,生成一系列的随机数,并对随机数进行统计,生成频率分布直方图,这里使用了一个重要的函数histogram

    clc;clear;
    y = randn(1,5001);%随机生成服从正态分布的样本点
    nbins=100;  %指定条形图bar的数量,并对区间进行等分
    h=histogram(y,nbins);
    

    简要描述一下histogram,他主要是对我们手中的数据进行一个简单统计,并生成频数分布直方图:

    • histogram(X)——默认设置生成
    • histogram(X,nbins)——指定bar的数量
    • histogram(X,edges)——指定edges生成频数分布直方图
      在这里插入图片描述
      除了直方图,我们可以得到一些对于后面拟合有用的信息:
    >> h
    
    h = 
    
      Histogram - 属性:
    
                 Data: [1×5001 double]
               Values: [1×100 double]
              NumBins: 100
             BinEdges: [1×101 double]
             BinWidth: 0.078600000000000
            BinLimits: [-3.640000000000001 4.220000000000000]
        Normalization: 'count'
            FaceColor: 'auto'
            EdgeColor: [0 0 0]
    
      显示 所有属性
    
    

    可以看到h.BinEdges这个参数就是直方图的横坐标,而h.Values就是每一个区间的频数,这对后面的拟合提供了初始参数。我们要对h.BinEdges做一点处理才能作为拟合的横坐标,这是因为我们要用bar的中心点作为拟合时候的横坐标:

    x=[];
    for i = 2:nbins+1
        x(i-1)=0.5*(h.BinEdges(i)+h.BinEdges(i-1));
    end
    z=h.Values;
    
    

    由“经验”我们可以看出,这个频率分布直方图明显满足正态分布,所以我们要指定matlab用一阶高斯分布’gauss1’正态分布进行拟合:

    x=x'; %之前得到的都是行向量,要转化为列向量才可以使用fit函数
    z=z';
    [fitobject,gof]  = fit(x,z,'gauss1');
    

    输出结果:
    在这里插入图片描述
    同学们可以用下面这个完整代码,在电脑中运行一遍:

    clc;clear;
    
    y = randn(1,5001);
    nbins=100;
    figure(1)
    h=histogram(y,nbins);hold on
    x=[];
    for i = 2:nbins+1
        x(i-1)=0.5*(h.BinEdges(i)+h.BinEdges(i-1));
    end
    z=h.Values;
    
    x=x';
    z=z';
    [fitobject,gof,output]  = fit(x,z,'gauss1');
    plot(fitobject)
    hold off
    
    

    fit函数

    fit函数的输入

    通过上面的例子,我们对fit有一个简单的了解,具体来说,使用fit有以下几种形式:

    • fitobject = fit(x,y,fitType)
      使用指定的fittype对以x为横坐标,y为纵坐标的二维数据进行拟合
    • fitobject = fit([x,y],z,fitType)
      使用指定的fittype对以x,y为横坐标,z为纵坐标的三维数据进行拟合
    • fitobject = fit(x,y,fitType,fitOptions)
      使用指定的fittype以及fitOptions算法选项对以x为横坐标,y为纵坐标的二维数据进行拟合
    • [fitobject,gof] = fit(x,y,fitType)
      使用指定的fittype以及fitOptions算法选项对以x为横坐标,y为纵坐标的二维数据进行拟合,并返回拟合优度(Goodness of Fit)
    • [fitobject,gof,output] = fit(x,y,fitType)
      返回拟合结果output

    可以看到,这里面有一个非常重要的fitType,即在进行拟合之前我们需要指定一个拟合的种类,这个可以根据自己的判断,matlab提供了其实不止以下这么几种,如果有需要可以去help中继续查找使用:

    在这里插入图片描述
    在这里插入图片描述
    其实就我目前接触到的实际项目而言,以上内容已经足以应付我们概率拟合的输入,关键是我们还要了解一下输出的东西是什么,经过fit函数,我们得到了什么?

    只有明白输出是什么,我们才可以对我们得到的这个拟合出的概率分布函数,作进一步的计算。

    fit函数的输出

    我们还是使用刚开始的那个例子来讲解。在命令行输入fitobject

    >> fitobject
    
    fitobject = 
    
         General model Gauss1:
         fitobject(x) =  a1*exp(-((x-b1)/c1)^2)
         Coefficients (with 95% confidence bounds):
           a1 =       137.5  (135, 139.9)
           b1 =  -0.0004399  (-0.02091, 0.02003)
           c1 =       1.411  (1.382, 1.44)
    
    

    可以看到实际上fitobject已经得到了这个拟合的具体的概率密度函数,实际上高斯分布的概率密度函数是:
    在这里插入图片描述
    所以在这里a1实际上等于 ,换算后可以得到 =0.003,这和我们生成随机数时的N(0,1)正态分布差远了,这是为什么呢?

    我们还是先算一下其他两个系数:
    在这里插入图片描述
    其他两个系数的计算非常符合N(0,1),究竟是怎么回事呢?

    这就是因为fit函数在这里并不是拟合概率密度函数,而是单纯的为了拟合(x,z)离散的点而得到的函数,他只不过是借用了高斯分布的形式。那我们怎么把这个函数变成gauss概率分布函数呢?

    其实很简单,fitobject函数只是在gauss概率密度函数上乘了一个放大系数,以此来拟合(x,z),我们只需要把这个放大系数提出即可,或者说,直接将前面已经得到的 代回到gauss概率密度函数中即可。

    mu=fitobject.b1;
    sigma=fitobject.c1/sqrt(2);
    
    xx=-10:0.001:10;
    fun=(1/sqrt(2*pi)/sigma).*exp(-((xx-mu)/(sigma*sqrt(2))).^2);
    figure(2)
    plot(xx,fun)
    
    

    输出结果:
    在这里插入图片描述

    展开全文
  • [mu,sigma]=normfit(x); r=normrnd(mu,sigma,1000,1); 根据样本x计算mu和sigma, 使用normrnd生成1000个服从样本概率密度函数的随机数。
  • MATLAB概率密度函数估计

    万次阅读 2017-03-04 21:31:28
    MATLAB概率密度函数估计 2016-03-23 16:12:24 分类: C#/.net 函数:ksdensity 功能:根据给定的数据,估计概率密度分布 示例: 1. 正态分布 x = randn(1,100000);  [y,xi] = ksdensity(x);...
  • MATLAB 高斯(正太)分布MATLAB 高斯(正太)分布 MATLAB 高斯(正太)分布 英文:Normal Probability Distribution Function ...x - 用于计算 pdf 的值(标量值 | 标量值组成的数组) mu - 均值(0 (默认)...
  • beta分布的概率密度matlab代码拾线 几何概率问题的数字代码,特别是“线拾取”问题的密度函数,即从某个区域随机拾取的线的长度是多少。 细节: src / LinePicking.h Contains C library routines to compute the ...
  • 今天在网上找到了一些概率密度函数的总结,怕以后找不到就先转到这里 统计工具箱函数 Ⅰ-1 概率密度函数 函数名 对应分布的概率密度函数 betapdf 贝塔分布的概率密度函数 binopdf 二项分布的概率密度函数...
  • beta分布的概率密度matlab代码分布数据标量回归分析中的分位数函数 作者贡献清单表 数据 抽象的 多形胶质母细胞瘤(GBM)是最常见和最具侵害性的癌症,始于大脑。 大多数GBM诊断是通过医学成像(例如磁共振成像...
  • 本文解决的用matlab实现数组的概率分布函数拟合。 一维数组不知道他的分布情况下。对数的频率分布直方图尽可能拟合。 数组我们用matlab自带的函数来生成。频数统计区间默认划 首先生成一个服从(0,0.5^2)的高斯...
  • matlab 求已知概率密度函数的随机数生成

    万次阅读 多人点赞 2018-06-03 16:52:13
    N=10000; %需要随机数的个数 a=zeros(N,1); %存放随机数的数列 n=0; f1=@(t) 1./(1.2*pi*(1+5*(t-7.3).^2)); f2=@(t) 1./(1.05*pi*(1+6*(t-8.2).^2)); tt=linspace(0,24,1000);...%根据公式计算...
  • seid=16338053070486680597&...%%绘制直方图+概率密度函数+累积分布函数 %矩阵A是random生成0-1的随机数,或读入自己的数据 A = rand(1,500)*50; %求A的最大、最小、均值 maxA = max(A); minA = min(A); meanA = mean
  • matlab开发-1随机数生成,具有任意分析表示概率密度函数。根据给定的PDF分析表达式生成随机数
  • 概率密度函数 分布概率密度函数(PDF)。 随机变量的(PDF)为 其中v > 0是自由度。 安装 $ npm install distributions-t-pdf 要在浏览器中使用,请使用 。 用法 var pdf = require ( 'distributions-t-pdf' ) ;...
  • 手算肯定不现实了,如何编制程序来计算多重积分呢?其实根据微积分的思想可以把积分转化为离散求和,如下图二重积分示意图,将二重积分转化为一个个小立方体的体积和。这种方法可以推广到任意重积分,但是如果利用...
  • 高斯概率密度函数

    千次阅读 2021-09-18 11:52:56
    单变量正态分布概率密度函数定义为: ρ(x)=12πσe−12(x−μσ)2(1) \rho(x)=\frac{1}{\sqrt{2\pi \sigma}} e^{-\frac{1}{2} (\frac{x- \mu}{\sigma})^2} \tag 1 ρ(x)=2πσ​1​e−21​(σx−μ​)2(1) 式中μ\...
  • MATLAB概率统计函数(1)

    千次阅读 2012-01-31 20:38:00
    本章介绍MATLAB概率统计中的若干命令和使用格式,这些命令存放于MatlabR12\Toolbox\Stats中。 4.1 随机数的产生 4.1.1 二项分布的随机数据的产生 命令 参数为N,P的二项随机数据 函数 binornd 格式 R =...
  • 该程序按照参考文献实现了两个概率密度函数之间的 tSL: Baba C. Vemuri, Meizhu Liu, Shun-Ichi Amari 和 Frank Nielsen, 总 Bregman 散度及其在 DTI 分析中的应用, IEEE 医学影像学报 (TMI'10),2010 年。 ...
  • 这个matlab文件是通过计算均值和协方差矩阵的多变量高斯概率密度函数
  • 概率密度函数非参数估计matlab代码使用Python进行均值平移分割 执行均值平移分割以跟踪图像序列上的对象。 均值漂移细分实施者:Agam Deep Arora(50169805)和Debika Dutt(50170009)提交日期:15年12月14日2.文献...
  • 该程序按照参考文献实现了两个多元正态概率密度函数之间的 tKL: Baba C. Vemuri, Meizhu Liu, Shun-Ichi Amari 和 Frank Nielsen, 总 Bregman 散度及其在 DTI 分析中的应用, IEEE 医学影像学报 (TMI'10),2010 年...
  • matlab中可以使用sortrows可以将矩阵的每行看作整体进行排序(与sort各自排序不同)。 默认先按照第一列排序,如果无法区分按照第二列…依次类推。 使用sortrows可以带有第二个参数指定维度或者维度顺序。 sortrows...
  • clear all; ...%%一维高斯函数 mu=0; sigma=1; x=-6:0.1:6; y=normpdf(x,mu,sigma); plot(x,y); figure; %%二维或多维高斯函数 mu=[0 0]; sigma=[0.3 0;0 0.35]; [x y]=meshgrid...
  • 蒙特卡洛方法概率密度函数

    千次阅读 2018-05-08 15:18:27
    蒙特卡洛方法里关于概率密度函数的估计为\hat{p}(x)=\frac{1}{N}\sum_{i=1}^{N}\delta (x-x^{(i)})这里了解x 在某一点的取值毫无意义,求区间内的概率才有意义。狄拉克函数δ 的积分为1...
  • parzen窗的matlab实现 本文档实现的是用简单的matlab程序实现parzen窗的设计
  • GLDM 计算给定图像的灰度差异方法概率密度函数。 该技术通常用于提取数字乳房 X 光照片的统计纹理特征。 有关灰度差异法的详细信息,请参阅以下论文JK Kim 和 HW Park,“用于检测数字化乳房 X 光照片中微钙化的统计...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,943
精华内容 1,577
关键字:

matlab计算概率密度函数

matlab 订阅