背景&目的:这里有一个40*40的矩阵a要画图pcolor,我想只保留正方形内接圆中的部分,其余四角为空白。
失败1:我试过用
a((i-20.5)^2+(j-20.5)^2>=20.5^2)=nan
这种方式,但是最后结果(图1)是圆周很粗糙。
但是又处于其他考虑,不想把矩阵插值成更大的(例如100100)
失败2:有人提出过这种思路:自己构造一个高精度(例如10001000)的“白板”叠加在上面,但结果是原来的4040只在10001000的角落看不见
——如何直接保留figure中圆域内的图像 而且边缘光滑呢?
你好,建议用插值:
[x, y] = meshgrid(linspace(-2,2,40));%可以换成你的x和y
a = sin(x).*cos(y);%可以换成你的a
theta = linspace(0,2*pi,41);
r = 0:0.1:2;
[T, R] = meshgrid(theta, r);
x1 = R.*cos(T); y1=R.*sin(T);
a1 = interp2(x,y,a,x1,y1);%
contourf(x1, y1, a1);
axis('equal'); colormap(jet(30));colorbar
例子效果:
如有帮助,还望题主给个采纳支持一下答主冲榜哟,谢谢啦