Matlab: 2D проекция 3D-функции - PullRequest
0 голосов
/ 22 ноября 2011

У меня есть функция f(x,y)= Exp(-x^2-y^-2)(x^2+y^2). Я хотел бы взглянуть на проекцию этой функции на ось X в MATLAB.

Есть мысли о том, как это сделать?

Ответы [ 3 ]

3 голосов
/ 23 ноября 2011

@ У Amro есть отличное решение, но вы также можете взглянуть на потрясающий shadowplot Скотта Хирша * от Центрального файлового обмена MATLAB. Проверьте это:

>> f = @(x,y) exp(-x.^2 -y.^(-2)).*(x.^2+y.^2);
>> [X,Y] = meshgrid(-10:0.5:10,-10:0.5:10);
>> surf(X,Y,f(X,Y))
>> xlim([-11,11])
>> ylim([-11,11])
>> shadowplot x
>> shadowplot y

enter image description here

3 голосов
/ 22 ноября 2011

примерно так:

xs = [];
ys = [];
zs = [];
for x = -10:0.1:10
    for y = -10:0.1:10
        xs = [xs x];
        ys = [ys y];
        z = f(x,y);
        zs = [zs z];
    end
end
figure; plot3(xs,ys,zs);  %plots the full function over both dimensions
figure; plot(xs,zs,'rx'); %plots the projection onto the x axis
figure; plot(ys,zs,'rx'); %plots the projection onto the y axis

, который делает это в диапазоне от -10 до 10 по x и y, но вы можете изменить это соответственно.

1 голос
/ 22 ноября 2011

Вы можете манипулировать видом , чтобы увидеть 2D-проекцию на оси x:

f = @(x,y) exp(-x.^2 -y.^(-2)).*(x.^2+y.^2);
[X,Y] = meshgrid(-10:0.5:10,-10:0.5:10);
surf(X,Y,f(X,Y))
view(90,0), shading interp
xlabel X, ylabel Y, zlabel Z

screenshot

...