我想在Matlab中绘制一个函数,但在表面的顶部和底部使用不同的颜色。我的代码是:
close all;
clear all;
[X, Y] = meshgrid(-10:.45:10,-10:.45:10)
x=X(1,:)'; %'
y=Y(:,1);
N=length(x(:,1))
f = -1.*ones(size(X));
for i = 1:N
for j=1:N
if (x(i)~=0 && y(j)~=0)
f(i,j) = (x(i).^2- y(j).^2)./(x(i).^2+y(j).^2);
end
end
end
figure(1)
surf(X,Y,f, 'FaceColor','white','EdgeColor','blue', 'LineWidth',.5)
view(-61,41)
title('Funktion f(x,y)', 'FontSize',12)
xlabel('x','FontSize',12)
ylabel('y', 'FontSize',12)
grid off
这个例子用不同的顶部/底部颜色来说明我所追求的东西(但是,它是用gnuplot完成的):
答案 0 :(得分:0)
以下内容并不完全符合您的要求,但可能有所帮助:
h = surf(X,Y,f, 'FaceColor','blue','EdgeColor','none'); %// no edges
lightangle(-30, 80) %// change values as needed
set(h,'DiffuseStrength',.9) %// change value as needed
set(h,'AmbientStrength',.3) %// change value as needed
如您所见,在这种类型的表示中,边缘未显示;相反,功能形状由面部的颜色显示。因此,使用更精细的采样可能会更好(如果您的问题可能)。当然,因为0对于你的函数是一个有问题的值,所以应该避免,因为你的原始采样确实(linspace
具有偶数个点也可以实现这一点)。例如,使用
[X, Y] = meshgrid(linspace(-10,10,500),linspace(-10,10,500));
你得到了更好看的图片