我有一个地形数据矩阵,它很大。我已经用 NaN 替换了陆地数据,并且海深数据是正的。(可以在下面看到一个小样本)
b= [
NaN NaN NaN NaN
4 NaN NaN NaN
19 14 NaN NaN
21 18 14 NaN
24 17 NaN NaN
40 13 NaN NaN
154 26 NaN NaN
232 44 NaN NaN
500 200 100 NaN
200 100 200 NaN
NaN NaN NaN NaN
];
我想获得沿海细胞。它应该是: (1,1) (2,2) (3,3) (4,4) (5,3) (6,3) (7,3) (8,3) (9,4) (10,4) (11,3) (11,2) (11,1) 这样我们就可以将单线轮廓绘制为海岸线。
我读了这篇文章MATLAB,在每一步都发生变化的矩阵中跟踪边界的最佳方法是什么? 但我无法使用它获得想要的海岸线。我也写了一个如下的脚本,但它返回一个刻度线(2 或 3 个单元格)和一些中断。
b(~isnan(b))=9; % sea cells will be 9
b(isnan(b))=98672; % land cells will be 98672
for i=1:255
for j=2:119
if b(i,j)==9
if ((b(i,j-1)==98672)||(b(i,j+1)==98672))
b(i,j-1)=333; % 333 will be the coastline
end
if ((b(i-1,j)==98672)||(b(i+1,j)==98672))
b(i,j-1)=333;
end
end
end
end
b(b==98672)=NaN;
b(b==9)=0.001;
pcolor(b);shading flat
中断发生在我们在海岸有岛屿或 V 形的点上。
你能帮我吗?请也给我发电子邮件。apt.man@gmail.com