可运行的渐变网格图
clc
clear
close all
xlim1 = 0;
xlim2 = 20;
ylim1 = 0;
ylim2 = 20;
row = ylim2-ylim1;
col = xlim2-xlim1;
fit = zeros(row*col);
gri = zeros(row,col);
enpo = [0.5,0.5];
enx = enpo(1,1);
eny = enpo(1,2);
eni = row-floor(eny);
enj = ceil(enx);
en = (eni-1)*row+enj;
num = 19;
sur0 = en;
for i = 1:num
sur1 = en-col*i;
if sur1 <= 0
sur1 = 0;
end
sur2 = en+col*i;
if sur2 > row*col
sur2 = 0;
end
sur3 = en-i;
if sur3 <= en-enj
sur3 = 0;
end
sur4 = en+i;
if sur4 >= en+(col-enj+1)
sur4 = 0;
end
sur0 = [sur0;sur1;sur2;sur3;sur4];
for j = 1:i
if j<i
sur56 = en-col*j;
if sur56 <= 0
sur5 = 0;
sur6 = 0;
else
sur5 = en-col*j-i;
if sur5 < (eni-j-1)*col+1
sur5 = 0;
end
sur6 = en-col*j+i;
if sur6 > (eni-j)*col
sur6 = 0;
end
end
sur78 = en+col*j;
if sur78 > row*col
sur7 = 0;
sur8 = 0;
else
sur7 = en+col*j-i;
if sur7 < (eni+j-1)*col+1
sur7 = 0;
end
sur8 = en+col*j+i;
if sur8 > (eni+j)*col
sur8 = 0;
end
end
sur0 = [sur0;sur5;sur6;sur7;sur8];
else
for k = 1:i
sur910 = en-col*j;
if sur910 <= 0
sur9 = 0;
sur10 = 0;
else
sur9 = en-col*j-k;
if sur9 < (eni-i-1)*col+1
sur9 = 0;
end
sur10 = en-col*j+k;
if sur10 > (eni-i)*col
sur10 = 0;
end
end
sur1112 = en+col*j;
if sur1112 >= row*col
sur11 = 0;
sur12 = 0;
else
sur11 = en+col*j-k;
if sur11 < (eni+i-1)*col+1
sur11 = 0;
end
sur12 = en+col*j+k;
if sur12 > (eni+i)*col
sur12 = 0;
end
end
sur0 = [sur0;sur9;sur10;sur11;sur12];
end
end
end
end
surn = (2*num+1)^2-(2*num-1)^2;
gri1 = zeros(surn,num);
gri1(1,1) = en;
for i = 1:num
j = (2*i+1)^2-(2*i-1)^2;
k = (2*i-1)^2+1;
sur00 = sur0(k:k+j-1);
sur000 = sort(sur00,'ascend');
gri1(:,i+1) = [sur000;zeros(surn-j,1)];
end
fit1 = (0);
for i = 1:num+1
fit1(i,1) = i;
end
for i = 1:num+1
gri2 = gri1(:,i);
gri3 = find(gri2);
gri4 = gri1(gri3,i);
gri4n = length(gri4);
for j = 1:gri4n
grij = rem(gri4(j),row);
if grij == 0
grij = col;
end
grii = (gri4(j)-grij)/row+1;
gri(grii,grij) = fit1(i,1);
end
end
for i = 1:row
for j = 1:col
for k = 1:num+1
if gri(i,j) == k
x1 = j-1; y1 = row-i;
x2 = j; y2 = row-i;
x3 = j; y3 = row-i+1;
x4 = j-1; y4 = row-i+1;
fill([x1,x2,x3,x4],[y1,y2,y3,y4],[0.5,0.5*(k-1)/(num+1),0.1*(num+1-k)/(num+1)]);
hold on
elseif gri(i,j) == 0
x1 = j-1; y1 = row-i;
x2 = j; y2 = row-i;
x3 = j; y3 = row-i+1;
x4 = j-1; y4 = row-i+1;
fill([x1,x2,x3,x4],[y1,y2,y3,y4],[1,1,1]);
hold on
end
end
end
end
hold on
grid on
axis equal
title('渐变图')
xlim([xlim1,xlim2])
ylim([ylim1,ylim2])
xlabel('X')
ylabel('Y')
运行结果