いくつかのガウス分布を作成して画像に配置しようとしています。ガウスはランダムに作成されたパラメーター (振幅、位置、および標準偏差) を持っています。最初にパラメータをベクトルまたは行列に入れ、次に ngrid() 関数を使用してガウス分布を作成するための 2 次元空間を取得していますが、エラーが発生します (ngrid 値を使用した数学的操作は自明ではない可能性があるため...)。エラーは次のとおりです。
??? Error using ==> minus
Integers can only be combined
with integers of the same class,
or scalar doubles.
Error in ==> ss_gauss_fit at 23
gauss = amp(i)*
exp(-((x-xc).^2 +
(y-yc).^2)./(2*std(i)));
コードはここにあります:
clear all;
image = uint8(zeros([300 300]));
imsize=size(image);
noOfGauss=10;
maxAmpGauss=160;
stdMax=15;
stdMin=3;
for i=1:noOfGauss
posn(:,:,i)=[ uint8(imsize(1)*rand()) uint8(imsize(2)*rand()) ];
std(i)=stdMin+uint8((stdMax-stdMin)*rand());
amp(i)= uint8(rand()* maxAmpGauss);
end
% draw the gaussians on blank image
for i=1:noOfGauss
[x,y] = ndgrid(1:imsize(1), 1:imsize(2));
xc = posn(1,1,i);
yc = posn(1,2,i);
gauss = amp(i)* exp(-((x-xc).^2 + (y-yc).^2)./(2*std(i)));
image = image + gauss;
end
これを修正する方法を教えてください.2dガウスをパラメータベクトルでプロットしてください...よろしくお願いします