matlab polyfit计算盐度的线性趋势并画图

clear all;close all;clc

%%
lon = ncread('hawaii_soest_salt.nc','longitude');
lat = ncread('hawaii_soest_salt.nc','latitude');
time= ncread('hawaii_soest_salt.nc','time');
sss_tmp1 = ncread('hawaii_soest_salt.nc','saltydsl');%设置起始位置和最终位置
sss_tmp2 = squeeze(sss_tmp1);
datestr(time/86400+datenum(1970,1,1));%看年份,单位为秒
% monthly mean to yearly mean
    years = 1980:2019;
    sss = nan(length(lon),length(lat),length(years));
    ti = 1;
    count = 0;
for yi = 1:length(years)
    count = count +1;
    sss_tmp  = sss_tmp2(:,:,ti:ti+11);
    ti = ti+12;
    sss(:,:,count) = nanmean(sss_tmp,3); % annual mean
end

% global mean sst variation
sss_mean = squeeze(nanmean(nanmean(sss,1),2));%对经纬度做平均
subplot(221)
set( gcf , 'color' , 'w' );
plot(years, sss_mean)
xlabel('year')
ylabel('sss(‰)')
title('全球平均海表盐度变化图')
grid on

%% calculate trend 1985-1993

 time1   = years(6:14);
 sss1    = sss(:,:,6:14);
 trends = zeros( length(lon), length(lat) );

 for i=1:length(lon)
      for j = 1:length(lat)

            tmp = squeeze( sss1(i, j, :) ) - mean(squeeze(sss1(i, j, :))) ;  

            [p r]  = polyfit( time1', tmp, 1);
              
            trends(i, j) =   p(1) ;

      end
 end
 
 subplot(222)
 set( gcf , 'color' , 'w' );
 m_proj('miller' , 'lon' , [ lon(1) lon(end) ] ,  'lat' , [ lat(1) lat(end) ] );
 % plot 全球sss变化趋势在空间上的分布
 [lon2d lat2d] = meshgrid(lon, lat);
 m_contourf(lon2d', lat2d', trends,20);
 colorbar
 caxis([-0.15*10^-3 0.1*10^-3])
 m_coast( 'patch' , [.7 .7 .7]);
 m_grid('box','on','linestyle','none');
 title('1985-1993 SSS trend')
 
 %%   1995-2000
  time1   = years(16:21);
 sss1    = sss(:,:,16:21);
 trends = zeros( length(lon), length(lat) );

 for i=1:length(lon)
      for j = 1:length(lat)

            tmp = squeeze( sss1(i, j, :) ) - mean(squeeze(sss1(i, j, :))) ;  

            [p r]  = polyfit( time1', tmp, 1);
              
            trends(i, j) =   p(1) ;

      end
 end
 
 subplot(223)
 set( gcf , 'color' , 'w' );
 m_proj('miller' , 'lon' , [ lon(1) lon(end) ] ,  'lat' , [ lat(1) lat(end) ] );
 % plot 全球sss变化趋势在空间上的分布
 [lon2d lat2d] = meshgrid(lon, lat);
 m_contourf(lon2d', lat2d', trends,20);
 colorbar
 caxis([-0.15*10^-3 0.1*10^-3])
 m_coast( 'patch' , [.7 .7 .7]);
 m_grid('box','on','linestyle','none');
 title('1995-2000 SSS trend')
%%   2000-2015
 time1   = years(21:36);
 sss1    = sss(:,:,21:36);
 trends = zeros( length(lon), length(lat) );

 for i=1:length(lon)
      for j = 1:length(lat)

            tmp = squeeze( sss1(i, j, :) ) - mean(squeeze(sss1(i, j, :))) ;  

            [p r]  = polyfit( time1', tmp, 1);
              
            trends(i, j) =   p(1) ;

      end
 end
 
 subplot(224)
 set( gcf , 'color' , 'w' );
 m_proj('miller' , 'lon' , [ lon(1) lon(end) ] ,  'lat' , [ lat(1) lat(end) ] );
 % plot 全球sss变化趋势在空间上的分布
 [lon2d lat2d] = meshgrid(lon, lat);
 m_contourf(lon2d', lat2d', trends,20);
 colorbar
 caxis([-0.05*10^-3 0.06*10^-3])
 m_coast( 'patch' , [.7 .7 .7]);
 m_grid('box','on','linestyle','none');
 title('2000-2015 SSS trend')


版权声明:本文为qq_44913577原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。