Matlab——m_map指南(4)——实例
1、 全球/地区温度图
(1)读取数据
clear all
setup_nctoolbox %调用工具包
tic %计时
%%
nc=ncgeodataset('tmpsfc.gdas.199401.grb2'); %读文件
tem_1=nc.variables %浏览数据类型
%%
a1=nc.geovariable(tem_1(1));%取得数据类型为Temperature_surface的数据
b1=a1.data(1,:,:); %第一个时间点温度数据
c1=squeeze(b1)-273.16;%删除单一维度,换为摄氏温度
%%
a2=nc.geovariable(tem_1(2));%取得数据类型为lat的数据,纬度
b2=a2.data(:,1)%提取数据
%%
a3=nc.geovariable(tem_1(3));%经度
b3=a3.data(:,1)%
%%
a4=nc.geovariable(tem_1(4));%取得数据类型为time的数据
b4=a4.data(:,1)%
%%
save A b2 b3 c1
toc
读取的是NCEP/CFSR数据,1994年1月的温度数据。

该数据一共四项。温度,纬度,经度,时间。温度中是3维数据组织形式

时间数据

经度数据

纬度数据

可以看出该数据集的数据组织形式,经度纬度构成世界地图,记录了744个时间点的温度数据。1小时采集一次数据。
温度数据

保存为mat格式数据,为画图做准备。
(2)画图
clear all
load A [Plg,Plt]=meshgrid(b3',b2');%形成网格 m_proj('hammer-aitoff','clongitude',-150);%投影模式 m_pcolor(Plg,Plt,c1);
shading flat;
colormap('jet');%颜色选择
hold on;
m_pcolor(Plg-360,Plt,c1);
shading flat; %着色模式
colormap('jet'); m_coast();
m_grid('xaxis','middle'); % h=colorbar('h');
% set(get(h,'title'),'string','1991年1月全球温度'); c=colorbar('southoutside','fontsize',12)
c.Label.String = '1994年1月全球温度';
c.Label.FontSize = 15;

(3)找出最大、最小温度的经纬度
clear all
load C
Max_col=max(c1);%列最大值
Max_row=max(c1,[],2)%行最大值
Max=max(max(c1));
[x1,y1]=find(c1==max(max(c1)));%x 行,y 列
T_1=Plt(x1,y1)%纬度
T_2=Plg(x1,y1)%经度 Min_col=min(c1);%列最大值
Min_row=min(c1,[],2)%行最大值
Min=min(min(c1));
[x,y]=find(c1==min(min(c1)));%x 行,y 列
T_x=Plt(x,y)%纬度
T_y=Plg(x,y)%经度

可以看出最热52度,在澳大利亚那块(142.8123E,23.2610S);最冷-62度,在北极圈那块(89.9999E,66.3486N)。
(4)中国(地区)温度图
clear all
load A LATLIMS=[3 54];
LONLIMS=[72 134];%选定边界范围 [Plg,Plt]=meshgrid(b3',b2');%形成网格 m_proj('lambert','lon',LONLIMS,'lat',LATLIMS);%投影模式 m_pcolor(Plg,Plt,c1);
shading flat;
colormap('jet');%颜色选择
hold on;
m_pcolor(Plg-360,Plt,c1);
shading flat; %着色模式
colormap('jet'); m_coast();
m_grid('box','fancy','tickdir','in'); % h=colorbar('h');
% set(get(h,'title'),'string','1991年1月全球温度'); c=colorbar('southoutside','fontsize',12)
c.Label.String = '1994年1月中国温度';
c.Label.FontSize = 15;

该方法是读取全球数据,只展示部分
(5)
改进的区域方法,读取该区域的数据数据,
clear all
setup_nctoolbox %调用工具包
tic %计时
%%
min_lat=115;
max_lat=279;
min_lon=231;
max_lon=430; %区域经纬度范围,在数据中的位置 %%
nc=ncgeodataset('tmp2m.gdas.199401.grb2'); %读文件
tem_1=nc.variables %浏览数据类型
%%
N1=nc.size(tem_1(1));%读取数据大小,可以看出数据的组织形式
a1=nc.geovariable(tem_1(1));%取得数据类型为Temperature_surface的数据
b1=a1.data(1,1,min_lat:max_lat,min_lon:max_lon); %第一个时间点温度数据
c1=squeeze(b1)-273.16;%删除单一维度,换为摄氏温度
%%
N2=nc.size(tem_1(2));
a2=nc.geovariable(tem_1(2));%取得数据类型为lat的数据,纬度
b2=a2.data(min_lat:max_lat,1);%提取数据
%%
N3=nc.size(tem_1(3))
a3=nc.geovariable(tem_1(3));%经度
b3=a3.data(min_lon:max_lon,1);%
%%
N4=nc.size(tem_1(4))
a4=nc.geovariable(tem_1(4));%取得数据类型为time的数据
b4=a4.data(:,1);%
%%
N5=nc.size(tem_1(5));%读取数据大小
a5=nc.geovariable(tem_1(5));%取得数据类型为time的数据
b5=a5.data(:,1);%
%%
save tem b2 b3 c1
toc

clear all
load tem LATLIMS=[3 54];
LONLIMS=[72 134];%选定边界范围 [Plg,Plt]=meshgrid(b3',b2');%形成网格 m_proj('lambert','lon',LONLIMS,'lat',LATLIMS);%投影模式 m_pcolor(Plg,Plt,c1);
shading flat;
colormap('jet');%颜色选择
hold on;
m_pcolor(Plg-360,Plt,c1);
shading flat; %着色模式
colormap('jet'); m_coast();
m_grid('box','fancy','tickdir','in'); % h=colorbar('h');
% set(get(h,'title'),'string','1991年1月全球温度'); c=colorbar('southoutside','fontsize',12)
c.Label.String = '1994年1月中国温度';
c.Label.FontSize = 15;


(6)读取方式的改变
clear all
setup_nctoolbox %调用工具包
tic %计时
%%
min_lat=115;
max_lat=279;
min_lon=231;
max_lon=430; %区域经纬度范围,在数据中的位置 %%
nc=ncgeodataset('tmp2m.gdas.199401.grb2'); %读文件
tem_1=nc.variables %浏览数据类型 %%
N1=nc.size(tem_1(1));%读取数据大小
b1=nc.data(tem_1(1),[1,1,min_lat,min_lon],[1,1,max_lat,max_lon]);%初始的读取位置,最终的位置
c1=squeeze(b1)-273.16;
%%
N2=nc.size(tem_1(2));%读取数据大小
b2=nc.data(tem_1(2),[min_lat],[max_lat]);
%%
N3=nc.size(tem_1(3));%读取数据大小
b3=nc.data(tem_1(3),[min_lon],[max_lon]);
save tem b2 b3 c1
toc

可以看出海面2米的温度组织形式,4维数据,包含了744个时间点,1个位置,576个纬度点,1152个经度点。
读取方式是初始位置用一个数组表示,终止位置用一个数组表示
clear all
load tem LATLIMS=[3 54];
LONLIMS=[72 134];%选定边界范围 [Plg,Plt]=meshgrid(b3',b2');%形成网格 m_proj('lambert','lon',LONLIMS,'lat',LATLIMS);%投影模式 m_pcolor(Plg,Plt,c1);
shading flat;
colormap('jet');%颜色选择
hold on;
m_pcolor(Plg-360,Plt,c1);
shading flat; %着色模式
colormap('jet'); m_coast();
m_grid('box','fancy','tickdir','in'); % h=colorbar('h');
% set(get(h,'title'),'string','1991年1月全球温度'); c=colorbar('southoutside','fontsize',12)
c.Label.String = '1994年1月中国温度';
c.Label.FontSize = 15;

(7)多个时间的平均值
clear all
setup_nctoolbox %调用工具包
tic %计时
%%
min_lat=115;
max_lat=279;
min_lon=231;
max_lon=430; %区域经纬度范围,在数据中的位置 %%
nc=ncgeodataset('tmp2m.gdas.199401.grb2'); %读文件
tem_1=nc.variables %浏览数据类型
N1=nc.size(tem_1(1));%读取数据大小
d=zeros(1,165,200);%预定义最后的数值存放空间
f=0%验证预留数
%%
for n=1:10 %选取10个时间点
b1=nc.data(tem_1(1),[n,1,min_lat,min_lon],[n,1,max_lat,max_lon]);%初始的读取位置,最终的位置
c(n,:,:)=squeeze(b1)-273.16;
d=d+c(n,:,:); %最终结果
end
for n=1:10
f=f+c(n,1,1);
end
e=squeeze(d);
% save tem
toc


f值等于e的第一个值,说明计算正确.最后计算平均值即可。
2、风向
(1)数据读取
clear all
setup_nctoolbox
tic
%% 读取数据文件
wind= ncgeodataset('wnd10m.gdas.199401.grb2');
wind_list = wind.variables;%文件的列表情况
%%
size_of_u = wind.size(wind_list(1));%u分量的数据尺寸,777小时,1个高度,经纬度数据,4D数据
data_u=wind.geovariable(wind_list(1));%取得数据类型为风速u的数据
u_1=data_u.data(1,1,:,:); %
u_2=squeeze(u_1);
%%
size_of_v = wind.size(wind_list(2));%v分量的数据尺寸,777小时,1个高度,经纬度数据,4D数据
data_v=wind.geovariable(wind_list(2));%取得数据类型为风速v的数据
v_1=data_v.data(1,1,:,:); %
v_2=squeeze(v_1);
%%
size_of_h= wind.size(wind_list(5));%v分量的数据尺寸,777小时,1个高度,经纬度数据,4D数据
data_h=wind.geovariable(wind_list(5));%取得数据类型为风速v的数据
v_1=data_h.data(1); %高度10米
%%
wind_speed=sqrt(u_2.^2+v_2.^2); %矢量合成
save wind u_2 v_2 wind_speed
toc

(2)展示
clear all
load lon_lat %载入坐标数据
load wind %载入风速数据 LATLIMS=[3 15];
LONLIMS=[115 134];%选定边界范围 m_proj('lambert','lon',LONLIMS,'lat',LATLIMS);%投影模式 min_lat=115;
max_lat=279;
min_lon=231;
max_lon=430; m_coast;
m_grid('box','fancy','tickdir','in');%边缘经纬度宽度
hold on;%图层合并
m_quiver(Plg(min_lat:max_lat,min_lon:max_lon),Plt(min_lat:max_lat,min_lon:max_lon),...
u_2(min_lat:max_lat,min_lon:max_lon),v_2(min_lat:max_lat,min_lon:max_lon)...
,7.5,'r');%经度,纬度,向东,向北的速度分量,转化为矢量箭头
xlabel('global surface winds 1994/01');


(3)
clear all
load lon_lat
load wind m_proj('hammer-aitoff','clongitude',-150);%投影模式 m_quiver(Plg,Plt,u_2,v_2,15,'r');
shading flat;
colormap('jet');%颜色选择
hold on;
m_quiver(Plg-360,Plt,u_2,v_2,15,'r');
shading flat; %着色模式
colormap('jet'); m_coast();
m_grid('xaxis','middle'); xlabel('global surface winds 1994/01');

3、气压
(1)一个时间点的气压
clear all
clear all
setup_nctoolbox
tic
%% 读取数据文件
pre= ncgeodataset('pressfc.gdas.199401.grb2');
pre_list = pre.variables;%文件的列表情况
%%
size_of_pre = pre.size(pre_list(1));%620小时,576纬度,1152经度
pre_1=pre.data(pre_list(1),[1,1,1],[1,576,1152]); %
pre_2=squeeze(pre_1);
%%
size_of_2 = pre.size(pre_list(2));%v分量的数据尺寸,777小时,1个高度,经纬度数据,4D数据
size_of_3 = pre.size(pre_list(3));
size_of_4 = pre.size(pre_list(4));
size_of_5 = pre.size(pre_list(5));
size_of_8 = pre.size(pre_list(8));
t_4=pre.data(pre_list(4),1,620);
t_8=pre.data(pre_list(8),1:124);
toc




可以看出时间点交错开了,所以最终处理数据时还要按顺序排列起来。
clear all
load lon_lat
load pre
m_proj('hammer-aitoff','clongitude',-150);%投影模式 m_pcolor(Plg,Plt,pre_2);
shading flat;
colormap('jet');%颜色选择
hold on;
m_pcolor(Plg-360,Plt,pre_2);
shading flat; %着色模式
colormap('jet'); m_coast();
m_grid('xaxis','middle'); % h=colorbar('h');
% set(get(h,'title'),'string','1991年1月全球温度'); c=colorbar('southoutside','fontsize',12)
c.Label.String = '1994年1月全球气压';
c.Label.FontSize = 15;

(2)
clear all
setup_nctoolbox
tic
%% 读取数据文件
pre= ncgeodataset('pressfc.gdas.199401.grb2');
pre_list = pre.variables;%文件的列表情况
size_of_1 = pre.size(pre_list(1));%620小时,576纬度,1152经度
size_of_2 = pre.size(pre_list(2));%v分量的数据尺寸,777小时,1个高度,经纬度数据,4D数据
size_of_3 = pre.size(pre_list(3));
size_of_4 = pre.size(pre_list(4));
size_of_5 = pre.size(pre_list(5));
size_of_8 = pre.size(pre_list(8)); t_4=pre.data(pre_list(4),1,620);
t_8=pre.data(pre_list(8),1:124); pre_sum=zeros(744,576,1152);
%%
for n=1:744
if mod(n-1,6)==0 %取余数
a=floor(n/6);
n_time=n-a*5;%下标位置
pre_sum(n,:,:)=pre.data(pre_list(5),[n_time,1,1],[n_time,576,1152]); %
else
a=floor((n-1)/6);
n_time=n-a-1;%下标位置
pre_sum(n,:,:)=pre.data(pre_list(1),[n_time,1,1],[n_time,576,1152]);
end
end
%% end pre_data=squeeze(mean(pre_sum))%求平均值 save pre_data_199401 pre_data
toc

综合运用余数和向下取整的方法,每隔五个从另外的数据中取一个数。最后用mean()函数求平均值。
4、湿度
Matlab——m_map指南(4)——实例的更多相关文章
- Matlab——m_map指南(3)——实例
m_map 实例 1. clear all m_proj('ortho','lat', 48,'long',-123');%投影方式,范围 m_coast('patch','r');%红色填充 m_g ...
- Matlab——m_map指南(2)
3.海岸线和深度测量 3.1.1 海岸线选项 m_coast('line', ...optional line arguments ); m_coast('line', ...optional lin ...
- MATLAB——m_map指南(1)
1.例图 (1) clear all m_proj('oblique mercator');%确定投影方式和绘图界线 m_coast;%画出海岸线 m_grid;%添加格网 第一行代码初始化投影,对于 ...
- MATLAB神经网络原理与实例精解视频教程
教程内容:<MATLAB神经网络原理与实例精解>随书附带源程序.rar9.随机神经网络.rar8.反馈神经网络.rar7.自组织竞争神经网络.rar6.径向基函数网络.rar5.BP神经网 ...
- C语言与MATLAB接口 编程与实例 李传军编着
罗列一下以前自己学习C语言与MATLAB混编的笔记,顺便复习一遍. <C语言与MATLAB接口 编程与实例 李传军编着>(未看完,目前看到P106) 目录P4-8 ************ ...
- matlab load函数用法 实例
一 语法: load(filename) load(filename,variables) load(filename,'-ascii') load(filename,'-mat') load(fil ...
- 【翻译】EXTJS 编码风格指南与实例
原文:EXTJS Code Style Guide with examples Ext JS风格指南: 熟知的且易于学习 快速开发,易于调试,轻松部署 组织良好.可扩展和可维护 Ext JS应用程序的 ...
- matlab文件读写处理实例(三)——读取文件特定行
(1) 读取文件特定行 CODE: ; ; if nline==line fprintf(fidout,'%s\n',tline); data ...
- matlab文件读写处理实例(二)——textread批量读取文件
问题:对文件夹下所有文件进行批量读取,跳过文件头部分,读取每个文件数据部分的7,8,9列,保存到变量并且输出到文件. 数据: 文件夹11m\
随机推荐
- 利用GitHub制作在线炫酷简历
首先我们先体验一下炫酷简历.然后决定我们要不要使用. https://jessezhao1990.github.... 如何使用本项目部署你自己的在线简历 1. 书写简历 在src文件夹里面有个con ...
- 前端每日实战:74# 视频演示如何用纯 CSS 创作一台 MacBook Pro
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MXNNyR 可交互视频 此视频是可 ...
- CSS+DIV自适应布局
CSS+DIV自适应布局 1.两列布局(左右两侧,左侧固定宽度200px;右侧自适应占满) 代码如下: <!doctype html> <html> <head> ...
- 利用 Rize 来进行 UI 测试或 E2E 测试
之前我曾经在<Rize - 一个可以让你简单.优雅地使用 puppeteer 的 Node.js 库>一文简单介绍过 Rize 这个库.当时仅仅是介绍这个库本身,关于如何使用,我没有给太多 ...
- Java多态实现的机制
Java提供了编译时多态和运行时多态两种多态机制.前者是通过方法重载实现的,后者是通过方法的覆盖实现的. 在方法覆盖中,子类可以覆盖父类的方法,因此同类的方法会在父类与子类中有着不同的表现形式. 在J ...
- Vue请求第三方接口跨域最终解决办法!2020最终版!
废话少说,再百度的近三个小时尝试了近10种方法无解后,终于皇天不负有心人! 这个vue axios 跨域问题被我解决了! 需求:请求客户端ip地址获取客户ip,再根据ip获取用户位置 工具:Vue,a ...
- (数据科学学习手札79)基于geopandas的空间数据分析——深入浅出分层设色
本文对应代码和数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 通过前面的文章,我们已经对geopanda ...
- C#桌面开发的未来WebWindow
目录 WebWindow 源码 作者博客 基于Chromium的Edge 体验 体验方式一: 体验方式二: 遗留的问题 WebWindow WebWindow是跨平台的库. Web Window的当前 ...
- 深度学习归一化:BN、GN与FRN
在深度学习中,使用归一化层成为了很多网络的标配.最近,研究了不同的归一化层,如BN,GN和FRN.接下来,介绍一下这三种归一化算法. BN层 BN层是由谷歌提出的,其相关论文为<Batch No ...
- 我的Keras使用总结(2)——构建图像分类模型(针对小数据集)
Keras基本的使用都已经清楚了,那么这篇主要学习如何使用Keras进行训练模型,训练训练,主要就是“练”,所以多做几个案例就知道怎么做了. 在本文中,我们将提供一些面向小数据集(几百张到几千张图片) ...