В Matlab я пытаюсь построить функцию в 2-мерном евклидовом пространстве с помощью следующего кода
s=.05;
x=[-2:s:2+s];
y=[-1:s:3+s];
[X,Y]=meshgrid(x,y);
Z=(1.-X).^2 + 100.*(Y-X.*X).^2;
surf(X,Y,Z)
colormap jet
Вот как выглядит мой график:
Я надеюсь раскрасить поверхность с более сильным контрастом, просто как показано в Википедии
Сюжет в Википедии нарисован с помощью кода Python:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.colors import LogNorm
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = Axes3D(fig, azim = -128, elev = 43)
s = .05
X = np.arange(-2, 2.+s, s)
Y = np.arange(-1, 3.+s, s)
X, Y = np.meshgrid(X, Y)
Z = (1.-X)**2 + 100.*(Y-X*X)**2
ax.plot_surface(X, Y, Z, rstride = 1, cstride = 1, norm = LogNorm(), cmap = cm.jet)
plt.xlabel("x")
plt.ylabel("y")
plt.show()
Мой код Matlab и код Python из Википедии, кажется, используют «струю» в качестве цветовой карты, но их фактическое отображение значения высоты в цвет отличается. Итак, мне было интересно, как я могу получить похожую раскраску в Matlab?
Спасибо и всего наилучшего!