I want to create random bumps on a flat surface
6 ビュー (過去 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.
Grzegorz Knor 2017 年 7 月 17 日
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));
% 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);