MATLAB涡旋边缘确定方法

      对于研究海洋中尺度涡的学者来说,我们都需要确定涡旋的边缘或者外围,通常定义距离涡旋中心最远的闭合等高线为涡旋外围。用matlab具体实现的代码如下所示。

  • 得到等高线值的代码:
function contourValues = getContourValues(C)
    contourValues = [];
    idx = 1;
    while idx < size(C, 2)
        level = C(1, idx);
        contourValues = [contourValues, level];
        idx = idx + 1 + C(2, idx);
    end
end
  • 判断是否闭合的关键语句:
isClosed = isequal([xx(i).a(1), yy(i).a(1)], [xx(i).a(end), yy(i).a(end)]);
  • 应用实例:

下面是一个反气旋涡的例子,其中的hh就是我们要找的涡旋外围对应的等高线。

function [hh]=contour_find(t)
load('lon.mat');load('lat.mat');load('h.mat');load('area_index.mat');
x0=lon;y0=lat;
%% save bound and eddy center
x1=lon(new(t-14,1):new(t-14,2));y1=lat(new(t-14,3):new(t-14,4)); %51
lon_ind=new(t-14,1):new(t-14,2);lat_ind=new(t-14,3):new(t-14,4);
[x y]=meshgrid(x1,y1);
x=x';y=y';
% steric_h=mean(steric_h(lon_ind,lat_ind,18:23,t),3);
for z=18:23
    load('steric_h.mat');
    steric_h=steric_h(lon_ind,lat_ind,z,t);
    % 设置等高线的间距
    contourInterval = 0.0005;
    % 生成等高线数据
    [C, H] = contour(x,y,steric_h, 'LevelList', 0:contourInterval:max(steric_h(:)));
    contourValues = getContourValues(C);
    %开始检索
    result=[];
    for i=1:length(contourValues)
        [row2, col2] = find(C==contourValues(i));
        col_index(i).a=col2;
        num2=C(2,col2); number(i).a=num2;
        col=col_index(i).a;num=number(i).a;
        x2=C(1,col+1:col+num);y2=C(2,col+1:col+num);
        xx(i).a=x2; yy(i).a=y2;
    %     xf=xx(i).a;yf=yy(1).a;
         isClosed = isequal([xx(i).a(1), yy(i).a(1)], [xx(i).a(end), yy(i).a(end)]);
         result(end+1)=isClosed;
    end
    index=find(result==1);
    values=[];
    for i =1:length(index)
        values(end+1)=contourValues(index(i));
    end
    h=min(values);hh(z-17)=h;
    % clabel(C, H);
    % set(a,'levelstep',0.001)%线间距
%     figure;
%     contour(x,y,steric_h,[h h],'red');
%     hold on
end
return



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空