У меня есть функция f(x,y)= Exp(-x^2-y^-2)(x^2+y^2). Я хотел бы взглянуть на проекцию этой функции на ось X в MATLAB.
f(x,y)= Exp(-x^2-y^-2)(x^2+y^2)
Есть мысли о том, как это сделать?
@ У 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
примерно так:
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, но вы можете изменить это соответственно.
Вы можете манипулировать видом , чтобы увидеть 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