MATLAB Answers

I want to create random bumps on a flat surface

조회 수: 22(최근 30일)
I have a 300x300 zeros matrix and I would like to create random bumps on the surface on random heights. To be more detailed, imagine circles of ones on the surface, I would like to (rather than those) have bumps on the surface.
Almost like 3D Guassian bumps on the surface.
Any help would be appreciated.

  댓글 수: 0

로그인 to comment.

채택된 답변

Grzegorz Knor
Grzegorz Knor 17 Jul 2017
You can add Two-dimensional Gaussian functions with random amplitude at random location:
M = zeros(300,300); % initial matrix
N = 3; % number of bumps
sigma = 3;% std (width) of Gauss
maxAmplitude = 5; % maximum height
[x,y] = meshgrid(1:size(M,1),1:size(M,2));
for k=1:N
% random location of bumps
xc = randi(size(M,1));
yc = randi(size(M,2));
% Gauss function
exponent = ((x-xc).^2 + (y-yc).^2)./(2*sigma^2);
amplitude = rand()*maxAmplitude;
% add Gauss to the matrix M
M = M + amplitude*exp(-exponent);
end
surf(M)
shading interp

  댓글 수: 1

Daniel Gray
Daniel Gray 17 Jul 2017
You're amazing! Thank you

로그인 to comment.

More Answers (0)

이 질문에 답변하려면 로그인을(를) 수행하십시오.


Translated by