X、Y座標に回転行列を適用し、それをmatlabでメッシュとしてプロットすることにより、ガウスの導関数(または元のガウス)を回転させようとしていますが、問題が発生していますプロットは毎回 90 度だけ回転し、すべての n*pi ポイントに対してメッシュはまったく表示されません。私は何が間違っているのか疑問に思っています。誰かが私のエラーを見つけてくれることを願っています。私は matlab にかなり慣れていないので、コードがきれいでない場合はご容赦ください。ありがとうございました!
これは私が持っているコードです:
sigma = 4;
[x,y] = deal(-3*sigma:.5:3*sigma);
[X,Y] = meshgrid(x,y);
B = [transpose(x) transpose(y)];
for i=1:1:16
figure(i);
theta = i*pi/8;
rotation = [cos(theta) sin(theta); -sin(theta) cos(theta)];
A = B * rotation;
[x_new, y_new] = meshgrid(A(:,1)', A(:,2)');
mesh(x_new, y_new, dgauss_x(x_new, y_new, sigma));
end
function f = dgauss_x(x, y, sigma)
%first order derivative of Gaussian
f = -x .* gaussian(x, y, sigma) ./ sigma^2;
function f = gaussian(x, y, sigma)
f = exp(-(x .^ 2 + y .^ 2)/(2*sigma^2)) / (sqrt(2*pi*(sigma^2)));