用Slice sampling 来得到某单个分布的样本算法:

已知分布f(x)

1.      选择一个初始点,x0.

2.      在[0,f(x0)] 之间,通过均分分布产生一个采样y

3.      在 f(x) 上画一条通过 y的 水平线

4.      在线段内再次均匀采样得到一个点x ,此x就是此次迭代得到的新采样点。

5.      最后用新得的x作为初始值,重复step 2~step5

Y截得f(x)两点(L,R) ,称为f(x)的切片,经过不断迭代,得到很多切片,其中,切片的长度越长,被选取到的概率越大。

难点在于:对于多峰函数,切片所在的边界往往是不连续的,解决方法是拒绝更短的切片。

Matlab 程序1,生成单个拉普拉斯分布的采样

%%

laplaceDis1=@(y)exp(-abs(y))/2; % mu=0,b=1的拉斯分布

N=2000; %产生N个采样点

x = slicesample(1,N,'pdf',laplaceDis1,'thin',5,'burnin',1000);%thin, burn-in 具体设置看介绍

histogram(x,50); %显示采样点的直方图

如图:

%%matlab 程序2

%% 生成拉普拉斯分布的联合分布,每个随机变量成分都是独立的(方便演示)

%  类似Gibbs 多变量采样的方法,对某个确定的x1,在条件概率密度下P(x2|x1)得到x2的采样,然后对此x2,得到P(x1|x2)的一个采样

% 由于此处x1,x2独立,p(x2|x1)=p(x2),且slicesampling 得到的对概率密度积分和是否为1没有关联,所以可以直接生成联合分布

laplaceDis1=@(y)exp(-abs(y))/2; %mu=0,b=1的拉普拉斯分布
laplaceDis2=@(y)exp(-sqrt(2)*abs(y-2))/sqrt(2);%mu=2,b=1/sqrt(2) 拉普拉斯分布

limitL=-5; % 概率密度函数左边界
limitR=5;

x=zeros(N,2);

for i=1:N
    start=unifrnd(limitL,limitR,1,2); %均布产生一个初值
    x(i,1)=slicesample(start(1),1,'pdf',laplaceDis1);
    x(i,2)=slicesample(start(2),1,'pdf',laplaceDis2);
end

figure
plot(x(:,1),x(:,2),'ro');

如图:

matlab 产生任意概率密度的联合分布相关推荐

  1. plotcylinder matlab,Matlab在任意两点之间绘制三维圆柱

    Matlab在任意两点之间绘制三维圆柱 Matlab在任意两点之间绘制三维圆柱 此函数可能存在一些不足,请多多指教! function plotcylinder(u1,u2,color_a,r) L= ...

  2. Matlab代码生成任意边长等间距正六边形采样点

    Matlab代码生成任意边长等间距正六边形采样点 https://blog.csdn.net/Hanghang_/article/details/87064184 本文以n代表正六边形在x轴正轴上的长 ...

  3. matlab 绘制任意方向和位置的空间圆锥体

    matlab 绘制任意方向和位置的空间圆锥体 function cone3(X1,X2,r,color) %一个简单的例子:cone3([1 2 3],[7 8 9],1,'b');%两个空间点位置, ...

  4. 利用Matlab将任意曲线旋转任意角度

    利用Matlab将任意曲线旋转任意角度 公式计算 数据 matlab代码 结果 公式计算 对于如上图所示的任意曲线,需要绕固定点O旋转某一角度,取曲线上任意一点A计算旋转后的坐标值. 设OA的长度为L ...

  5. MATLAB 求任意一个数的所有因子

    MATLAB 求 任意一个数的所有因子 我们都知道matlab 有自带的求最大公约数和最小公倍数的函数,但是缺少求取任意一个数所有 因子 的函数, 我么有时候将一个数组进行分段截取的时候希望每段长度都 ...

  6. matlab生成任意波形发生器(AWG)所需波形文件程序

    matlab生成任意波形发生器(AWG)所需波形文件程序 环境 matlab2016a 简介 使用Matlab生成任意波形发生器(AWG)所需波形文件,使得任意波形发生器产生你所需波形,本文使用高斯脉 ...

  7. matlab snapnow,任意倾斜椭圆方程的画法.pdf

    任意倾斜椭圆方程的画法 椭圆的旋转变换 标准椭圆方程为 .下面介绍两种画任意形式的椭圆方法,比如椭圆心不在原点,带有倾斜角的椭圆,结合基本 公式和程序画任意形式的倾斜椭圆. Contents  初始 ...

  8. matlab系列之(一)——利用matlab实现任意两个多项式相加

    上课时的课程作业,后续我会持续整理出来注释好,供大家共同学习!致谢课程老师! 一.问题描述 输入任意两个多项式,相加后输出结果: 二.问题分析 输入多项式可以采用输入系数矩阵或完整多项式的方式,为了符 ...

  9. matlab生成任意区间的随机数

    使用matlab中的rand函数生成任意区间的随机数公式 r = a + (b-a)*rand(m,n) 其中[a,b]是范围,[m,n]是生成的数据形状.比如我想生成[-5,5]之内10个随机数 a ...

  10. matlab中任意两边之和大于第三边,MATLAB教程第三章.ppt

    <MATLAB教程第三章.ppt>由会员分享,可在线阅读,更多相关<MATLAB教程第三章.ppt(34页珍藏版)>请在人人文库网上搜索. 1.MATLAB程序语言设计, ,第 ...

最新文章

  1. OAuth2.0文档
  2. Jzoj3931【NOIP2014day1官方数据】联合权值
  3. spring20:Aspectj实现前置通知@Before
  4. Day03:文件打开;错误处理
  5. Dijkstra 算法——计算有权最短路径(边有权值)
  6. Matlab——对比度拉伸
  7. 一款简单实用的桌面电子邮件客户端
  8. Kubernetes 上容器的启动顺序如何把控?
  9. Java多线程优化方法及使用方式
  10. 分享一个电脑截动图的软件LICEcap
  11. 重庆钢铁泛微oa系统服务器更新时间,泛微全新OA系统-协同办公系统
  12. 客户下单邮件跟进书写
  13. PhpStorm10最新版破解注册激活码(图文版)
  14. 【论文笔记】FlowNet:有监督的光流估计(optical flow estimation)网络
  15. C语言—内存的管理和释放
  16. 一年来终于用实际案例把matplotlib的绘图坐标轴说清楚了-太给力了
  17. 【关于3D-R2N2的配置和使用】
  18. html圣诞快乐英文,圣诞快乐英语,圣诞快乐英语简写?
  19. 什么是Smalltalk
  20. 吴恩达《机器学习》——SVM支持向量机

热门文章

  1. 【AR】DroidCam笔记本调用手机摄像头(smartphone's camera as pc webcam)
  2. 关于DSP2812的Timer0定时器配置程序的质疑
  3. 58同城赶集网简历怎么下载?【58同城赶集网简历采集,真实手机号联系方式获取】
  4. 一个00后无学历废物的编程之路
  5. GVF场下的B-Snake模型
  6. [原创]FlashFXP打造自动镜像更新
  7. 工频变压器和高频变压器
  8. 原子结构示意图全部_原子结构示意图知识点总结
  9. mysql 员工登记表_员工部门信息表-myemployees
  10. 模式识别与机器学习 第一章 绪论