我正在尝试通过将旋转矩阵应用于 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)));