生成随机向量matlab,如何在MATLAB中生成2D随机向量?

我有一个在单位平方S = [0,1] x [0,1]上定义的非负函数f,这样就可以了

Uq0ZU.gif

我的问题是,如何根据概率密度函数f使用MATLAB从S生成2D随机向量?

最佳答案 拒绝抽样

Luis Mendo提出的建议非常好,因为它适用于几乎所有的分发功能.基于this answer我为m编写了代码.

以这种方式使用拒绝抽样的一个重要方面是您必须知道该范围内的pdf的最大值.如果您高估了代码的最大值,那么代码运行速度会变慢.如果你低估了它会产生错误的数字!

这个想法是你采样许多统一的分布点,并根据点的概率密度接受.

pdf=@(x).5.*x(:,1)+3./2.*x(:,2);

maximum=2; %Right maximum for THIS EXAMPLE.

%If you are unable to determine the maximum of your

%function within the [0,1]x[0,1] range, please give an example.

result=[];

n=10;

while (size(result,1)

%1. sample random point:

val=rand(1,2);

%2. Accept with probability pdf(val)/maximum

if rand

%append to solution

result(end+1,:)=val;

end

end

我知道这个解决方案不是一个快速的实现,但我想从一个尽可能简单的实现开始,以确保拒绝采样的概念变得清晰.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值