在 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]);
我有一个 n x n 维的二维数组,每个网格位置的值为 1(如图所示)。我想为落在由 Matlab 中的边坐标 (p1,p2,p3) 定义的三角形内的那些网格点更改值(从 1 到 0)。
试试这个:
[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]);