本文作者:波哥 工作单位:中国海洋大学海洋与大气学院 联系邮箱:916490285@qq.com
1 三维涡旋温度、盐度、流速以及合成图: 1.1 三维涡旋盐度图: 7 g! N( k5 W/ ^7 |$ a' p
[C] 纯文本查看 复制代码 clc;clear;close all
fig_h=figure;
set(fig_h,'position',[50,50,1200,1200])
for j=1:2
if j==1
load('cyc_lat_lon.mat')%读取已经切好的数据;cyc 气旋
load('cyc_data.mat')%读取已经切好的数据;TSUV3
lev=1;
[c,i]=min(abs(lat-lat_cyc_bowl(3,1)));
Lon=lon(i(1),:);
[c,i]=min(abs(lon-lon_cyc_bowl(3,1)));
Lat=lat(:,i(1));
llat=lat_cyc_bowl(3,:);
llon=lon_cyc_bowl(3,:);
else
load('anti_lat.mat')%anti反气旋数据
load('anti_data.mat')%anti反气旋数据
[c,i]=min(abs(lat-lat_anti_lense(3,1)));
Lon=lon(i(1),:);
[c,i]=min(abs(lon-lon_anti_lense(3,1)));
Lat=lat(:,i(1));
llat=lat_anti_lense(8,:);
llon=lon_anti_lense(8,:);
end
% meshgrid 网格化数据;
[X1,Y1,Z1]=meshgrid(Lon,Lat,level);% level 是深度;
T=sst3d;
u=u3d;
v=v3d;
Sal=salt3d;
%% plot sal
subplot(1,2,j)
slice(X1,Y1,Z1,Sal,[],[],-1*depth(1:5))%(1:5)画5层的盐度图;
shading interp
colormap jet
hold on
plot3(llon(1:5),llat(1:5),-1*depth(1:5),'o--b')% 判断出来涡旋中心的位置,进行画线条;
xlabel('Longitude')
ylabel('Latitude')
zlabel('Depth(m)')
set(gca,'ztick',[-200 -150 -100 -50 -10])
view(-44,15)
if j==1
title('气旋 盐度')
else
title('反气旋 盐度')
end
end
colorbar
saveas(fig_h,'3d_salt.png') / j+ f# V. V4 q5 [" O2 ^( t. }$ x
1.2 三维涡旋温度、盐度、流速以及合成图: 4 e. s" W; \) }
[C] 纯文本查看 复制代码 %% temp
clc;clear;close all
fig_h=figure;
set(fig_h,'position',[50,50,1200,1200])
for j=1:2
if j==1
load('cyc_lat_lon.mat')%读取已经切好的数据;cyc 气旋
load('cyc_data.mat')%读取已经切好的数据;TSUV3
lev=1;
[c,i]=min(abs(lat-lat_cyc_bowl(3,1)));
Lon=lon(i(1),:);
[c,i]=min(abs(lon-lon_cyc_bowl(3,1)));
Lat=lat(:,i(1));
llat=lat_cyc_bowl(3,:);
llon=lon_cyc_bowl(3,:);
else
load('anti_lat.mat')%anti反气旋数据
load('anti_data.mat')%anti反气旋数据
[c,i]=min(abs(lat-lat_anti_lense(3,1)));
Lon=lon(i(1),:);
[c,i]=min(abs(lon-lon_anti_lense(3,1)));
Lat=lat(:,i(1));
llat=lat_anti_lense(8,:);
llon=lon_anti_lense(8,:);
end
% meshgrid 网格化数据;
[X1,Y1,Z1]=meshgrid(Lon,Lat,level);% level 是深度;
T=sst3d;
u=u3d;
v=v3d;
Sal=salt3d;
%% plot sal
subplot(1,2,j)
slice(X1,Y1,Z1,T,[],[],-1*depth(1:5))%(1:5)画5层的盐度图;
shading interp
colormap jet
hold on
plot3(llon(1:5),llat(1:5),-1*depth(1:5),'o--b')% 判断出来涡旋中心的位置,进行画线条;
xlabel('Longitude')
ylabel('Latitude')
zlabel('Depth(m)')
set(gca,'ztick',[-200 -150 -100 -50 -10])
view(-44,15)
if j==1
title('气旋 温度')
else
title('反气旋 温度')
end
end
colorbar
saveas(fig_h,'3d_temp.png')
1.3 三维涡旋温度、盐度、流速以及合成图: 7 f( ~- c+ v* C/ `; N9 ~# V5 K
[C] 纯文本查看 复制代码 %% u v
clc;clear;close all
fig_h=figure;
set(fig_h,'position',[50,50,1200,1200])
for j=1:2
if j==1
load('cyc_lat_lon.mat')%读取已经切好的数据;cyc 气旋
load('cyc_data.mat')%读取已经切好的数据;TSUV3
lev=1;
[c,i]=min(abs(lat-lat_cyc_bowl(3,1)));
Lon=lon(i(1),:);
[c,i]=min(abs(lon-lon_cyc_bowl(3,1)));
Lat=lat(:,i(1));
llat=lat_cyc_bowl(3,:);
llon=lon_cyc_bowl(3,:);
else
load('anti_lat.mat')%anti反气旋数据
load('anti_data.mat')%anti反气旋数据
[c,i]=min(abs(lat-lat_anti_lense(3,1)));
Lon=lon(i(1),:);
[c,i]=min(abs(lon-lon_anti_lense(3,1)));
Lat=lat(:,i(1));
llat=lat_anti_lense(8,:);
llon=lon_anti_lense(8,:);
end
% meshgrid 网格化数据;
[X1,Y1,Z1]=meshgrid(Lon,Lat,level);% level 是深度;
T=sst3d;
u=u3d;
v=v3d;
[m,n,p]=size(u);
w=zeros(m,n,p);
Sal=salt3d;
%% plot uv
subplot(1,2,j)
for i=1:5
loc(i) = find(level==-depth(i));
quiver3(X1(1:4:end,1:4:end,loc(i)),Y1(1:4:end,1:4:end,loc(i)),Z1(1:4:end,1:4:end,loc(i)),u(1:4:end,1:4:end,loc(i)),v(1:4:end,1:4:end,loc(i)),w(1:4:end,1:4:end,loc(i)),2)%(1:5)画5层的uv图;
hold on
end
% colormap jet
hold on
plot3(llon(1:5),llat(1:5),-1*depth(1:5),'o--b')% 判断出来涡旋中心的位置,进行画线条;
xlabel('Longitude')
ylabel('Latitude')
zlabel('Depth(m)')
set(gca,'ztick',[-200 -150 -100 -50 -10])
view(-44,15)
if j==1
title('气旋 流速')
else
title('反气旋 流速')
end
end
saveas(fig_h,'3d_uv.png')
2 j" Q S. V$ M' B5 x3 n! m
1.4 三维涡旋温度、盐度、流速以及合成图: 0 Y/ ^' \1 t. U
[C] 纯文本查看 复制代码 %% u v temp
clc;clear;close all
fig_h=figure;
set(fig_h,'position',[50,50,1200,1200])
for j=1:2
if j==1
load('cyc_lat_lon.mat')%读取已经切好的数据;cyc 气旋
load('cyc_data.mat')%读取已经切好的数据;TSUV3
lev=1;
[c,i]=min(abs(lat-lat_cyc_bowl(3,1)));
Lon=lon(i(1),:);
[c,i]=min(abs(lon-lon_cyc_bowl(3,1)));
Lat=lat(:,i(1));
llat=lat_cyc_bowl(3,:);
llon=lon_cyc_bowl(3,:);
else
load('anti_lat.mat')%anti反气旋数据
load('anti_data.mat')%anti反气旋数据
[c,i]=min(abs(lat-lat_anti_lense(3,1)));
Lon=lon(i(1),:);
[c,i]=min(abs(lon-lon_anti_lense(3,1)));
Lat=lat(:,i(1));
llat=lat_anti_lense(8,:);
llon=lon_anti_lense(8,:);
end
% meshgrid 网格化数据;
[X1,Y1,Z1]=meshgrid(Lon,Lat,level);% level 是深度;
T=sst3d;
u=u3d;
v=v3d;
[m,n,p]=size(u);
w=zeros(m,n,p);
Sal=salt3d;
%% plot uv
subplot(1,2,j)
for i=1:5
loc(i) = find(level==-depth(i));
quiver3(X1(1:4:end,1:4:end,loc(i)),Y1(1:4:end,1:4:end,loc(i)),Z1(1:4:end,1:4:end,loc(i)),u(1:4:end,1:4:end,loc(i)),v(1:4:end,1:4:end,loc(i)),w(1:4:end,1:4:end,loc(i)),2,'k')%(1:5)画5层的uv图;
hold on
end
slice(X1,Y1,Z1,T,[],[],-1*depth(1:5))%(1:5)画5层的盐度图;
shading interp
colormap jet
hold on
plot3(llon(1:5),llat(1:5),-1*depth(1:5),'o--b')% 判断出来涡旋中心的位置,进行画线条;
xlabel('Longitude')
ylabel('Latitude')
zlabel('Depth(m)')
set(gca,'ztick',[-200 -150 -100 -50 -10])
view(-44,15)
if j==1
title('气旋 温度+流速')
else
title('反气旋 温度+流速')
end
end
colorbar
saveas(fig_h,'3d_uv_temp.png')
[p=null, 2, center][color=rgb(0, 0, 0)][font=sans-serif][size=16px]
获取本文Matlab三维涡旋温度、盐度、流速以及合成图源代码和数据的途径: * m7 b6 M3 H0 l/ r% Y+ E/ t
|