gpt4 book ai didi

matlab - 在网格上的不同点放置高斯函数

转载 作者:太空宇宙 更新时间:2023-11-03 20:24:23 25 4
gpt4 key购买 nike

我希望在大型网格上创建随机分布的高斯曲线形状。我基本上想使用这个功能:

Z = 0.3*exp(-5*(x.^2+y.^2))-0.1;
Z(Z<0)=0;

并能够选择它的位置(在 x 和 y 坐标中),并有多个图。

所以现在,我有这个:

Single Point

但我想生成这个:

Distributed

有没有一种相当简单的方法来做到这一点?我试过玩弄代码,但恐怕我不是数学家,也不是 MATLAB 专家。

任何帮助将不胜感激。

最佳答案

看看这个!

工作方式:

  1. 生成随机点
  2. 检查点是否比西格玛更近
  3. 如果不是,则在那里创建一个高斯!
  4. 重复直到 Ngaussians 到达

代码:

clear
n_gaussians=15;
gaussians=0;
sigma=1; % std
mindist=sigma; % if distance is smaller than this gaussians "collide"

[x,y]= meshgrid(-5:0.1:5,-5:0.1:5);
used=[];
Z=zeros(size(x));
while gaussians<n_gaussians

xm=(rand(1)-0.5)*10;
ym=(rand(1)-0.5)*10;
notvalid=0;
for ii=1:size(used,2)
% if we are too close to any point.
if norm([xm-used(1,ii),ym-used(2,ii)])<mindist
notvalid=1; % do not add this gauusian
end
end
if notvalid
continue
end
used(:,end+1)=[xm;ym];
Zaux = 0.3/sigma*exp(-5*((x-xm).^2+(y-ym).^2)/sigma.^2)-0.1;
Zaux(Zaux<0)=0;
Z=Z+Zaux;
gaussians=gaussians+1;
end

surf(x,y,Z);
axis equal

enter image description here

关于matlab - 在网格上的不同点放置高斯函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33809188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com