在 Matlab 中替换落在三角形内的值

Replace values falling inside a triangle in Matlab

我有一个 n x n 维的二维数组,每个网格位置的值为 1(如图所示)。我想为落在由 Matlab 中的边坐标 (p1,p2,p3) 定义的三角形内的那些网格点更改值(从 1 到 0)。

k.imgur.com/BGPws.png

试试这个:

[X, Y] = meshgrid(1:1300, 1:1300);
Z = ones(size(X));

p = [500 0; 1000 0; 1000 500]'; % polygon points

indx = inpolygon(X(:), Y(:), p(1,:), p(2,:));

Z2 = Z;
Z2(indx) = 0;

figure('position', [200 200 1000 400])
subplot(1,2,1);
pcolor(X, Y, Z);  shading flat; colorbar; caxis([0, 2]); daspect([1,1,1]);
subplot(1,2,2);
pcolor(X, Y, Z2);  shading flat; colorbar; caxis([0, 2]);daspect([1,1,1]);