MATLAB三维图变黑 | shading interp作用

  • Post author:
  • Post category:其他




问题

利用surf函数画三维图在xoy平面的投影时,画出的图像较黑,如下图所示。

图1



原因

原因在于坐标轴取点太密,surf的边界是黑的,所以看起来全黑了。



解决

用mesh画,画完加一句shading interp。后续图像如下所示。

图2



shading interp作用

对曲面或图像对象的颜色着色进行色彩的插值处理,使色彩平滑过渡。



执行代码

已知



x

[

0

,

1

]

x\in[0,1]






x













[


0


,




1


]









y

[

1

,

1

]

y\in[-1,1]






y













[





1


,




1


]









(

1

x

)

2

+

y

2

)

[

0

,

1

]

\sqrt{(1-x)^2+y^2) }\in[0,1]














(


1









x



)










2











+





y










2









)



































[


0


,




1


]






函数



f

(

x

,

y

)

=

2

x

2

x

2

+

y

2

2

x

2

+

2

y

2

+

1

2

x

f(x,y)=\frac{2x-2x^2+y^2}{2x^2+2y^2+1-2x}






f


(


x


,




y


)




=




















2



x










2









+


2



y










2









+


1





2


x
















2


x





2



x










2









+



y










2
































画出该函数在xoy平面上的图像表示。

clear;
clc;
f=@(x,y)(2.*x-2.*x.*x+y.*y)./(2.*x.*x+2.*y.*y+1-2.*x);
x=0:0.01:1;
y=-1:0.01:1;
[X,Y]=meshgrid(x,y);%meshgrid()生成二维网格矩阵,
%将输入的两个向量进行相应的行扩充和列扩充以得到两个增广矩阵,对该矩阵可应用二维函数
Z=f(X,Y);
Z(sqrt((1-X).^2+Y.^2)>1)=NaN;  %限定定义域
%surf(X,Y,Z);
mesh(X,Y,Z); %只有网格
shading interp
colorbar; %添加色标,生成与高度对应的图例(显示出最大值和最小值)
view(0,90); %投影在xoy轴



参考


怎么用matlab画指定定义域内的二元函数图像



MATLAB 三维图形漆黑无比



shading interp作用



版权声明:本文为weixin_45518182原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。