matlab温度平流计算函数
2021-03-24 本文已影响0人
碧海蓝天_BLUE2016
function [sstadv] = Tadv(sst,u10,v10,lat,lon)
% 计算温度平流
% 输入,海温,10米u,v风速 水平温度平流计算公式为 -(udt/dx+vdt/dy)
m=size(sst);
[X,Y] = meshgrid(lat,lon);
for t=1:m(3)
tt=sst(:,:,t);
u=u10(:,:,t);
v=v10(:,:,t);
dtx = cdiff(tt,1); %359*180
dty = cdiff(tt,2); %360*179
dx = cdiff(Y,1)*pi/180;
dy = cdiff(X,2)*pi/180;
sstadv(:,:,t)=-1*((u.*dtx)./(cos(X*pi/180).*dx) + v.*dty./dy)./6.371e6;
end
function [yy] = cdiff(x,dim)
%UNTITLED3 中央差分
% x(m,n)输入一个二维数组
s=size(x);
yy=nan(s(1),s(2));
if dim==1
x1=x(1:end-2,:);
x2=x(3:end,:);
y=x2-x1;
yy(2:end-1,:)=y;
else if dim==2
x1=x(:,1:end-2);
x2=x(:,3:end);
y=x2-x1;
yy(:,2:end-1)=y;
end
end
end