matlab画台风轨迹图小tip

2023-12-31 13:08
文章标签 matlab 轨迹 tip 图小 台风

本文主要是介绍matlab画台风轨迹图小tip,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

<写在前面>
关于台风轨迹图,这次由于作业需要就画了一幅轨迹图,参考原图选自论文:

LIU Zenghong, XU Jianping, SUN Chaohui, WU Xiaofen. An upper ocean response to Typhoon Bolaven analyzed with Argo profiling floats [J]. Acta Oceanol. Sin., 2014, 33(11), 90–101

大家有兴趣可以自行查找论文进行阅读,本文所绘制台风轨迹图选取论文中的Bolaven(1215号)台风,台风数据采自JMA(由于本人还在学习中,论文中Unisys weather information system尚不会使用,望了解unisys weather的伙伴有时间可以指导,在此感谢>-<),argo浮标数据则主要来源于中国Argo实时资料中心的相关数据;
如有错误还望批评指正!


<图像一览>
台风轨迹图


1 关于台风轨迹绘制

台风轨迹的绘制可以通过m_patch或者m_line等命令进行绘制;

1.1 m_patch

以下是m_patch绘制的简单示范图:
台风轨迹示范图
在使用m_patch的时候需要注意lat的最后一个值需要是NaN,不然得到的图像将会是一片阴影覆盖部分

m_proj('mercator','lat',[15,30],'lon',[120,150]);
m_coast('patch',[.7 .7 .7],'edgecolor','none');
m_grid('linestyle',':','box','fancy','tickdir','out','linecolor','w',...'alpah','0.5','ytick',[15:5:30],'xtick',[120:5:150]);
lat(end)=NaN;   %就是这句,一定要设置NaN,否则图像是面,而非线!
m_patch(lontc,lattc,'k');

在patch命令中可以直接设置线条为渐变颜色,但是在m_patch中,可能是由于命令要求不同,在mmap文件m_patch.m中注释要求颜色设置需要是字符或者1x3 RGB数组,因此个人在设置渐变时失败,大家也可以各自尝试一下,共享经验!
命令行输入openExample(‘graphics/CreateMulticoloredLineExample’)就可以调用运行matlab中patch设置渐变线条的示例,以下是示例结果:
patch设置渐变颜色线条

1.2 m_line

最后在<图像一览>中呈现的图就是用m_line绘制的了,这里需要注意的是,m_line是绘制线条,两点确定一条直线,本人一开始没有意识到这一点,最后得到的结果不连续。

f1 = figure(1);
m_proj('mercator','lat',[15,30],'lon',[120,150]);
m_coast('patch',[.7 .7 .7],'edgecolor','none');
m_grid('linestyle',':','box','fancy','tickdir','out','linecolor','w',...'alpah','0.5','ytick',[15:5:30],'xtick',[120:5:150]);colormap(m_colmap('jet',41));
colorbar;
caxis([15,55]);
cmap = colormap(f1);n = length(lontc);
for i = 1:nif (isnan(ws(i))==1)ci = cmap(1,:);elseci = cmap(ws(i)-14,:);endhold onif (i == 1)m_line(lontc(1:2),lattc(1:2),'Color',ci,'linewidth',4);elsem_line(lontc(i-1:i),lattc(i-1:i),'Color',ci,'linewidth',4);end
end
....然后是一些图像注释等代码(此处省略)

这里大致分析一下代码内容:

  1. m_proj,coast,grid进行基本投影海岸等设置
  2. 选取想要应用的colorbar并设置想要的范围并返回得相应的cmap,这里要注意,本人在设置时候colormap(m_colmap(‘jet’,41)),这样得到的cmap恰好是41x3 RGB矩阵,恰好caxis为[15,55],并以1为步长时的数组大小为41,这样从15到55,方便每个整数对应一个1x3 RGB矩阵
  3. ci就是根据具体风速所提取的RGB矩阵,再通过for循环,对m_line进行拼接,这里m_line每两点画一个,颜色ci为相应速度大小在colorbar中对应的RGB,然后画n次
  4. 注意事项:m_line需要是两点才能防止间断,ci是相应最大风速大小根据colorbar返回的颜色

2 关于argo位置的标记

argo位置标记直接使用m_plot即可,此处不作赘述

3 关于colbar颜色返回值

在1.2中有应用到colorbar某特定数值的RGB返回,这里再次进行总结

  1. colormap jet(n),表示设置颜色数为n,类型为jet的colormap,该colormap是由nx3的RGB矩阵构成的,jet可以替换成自己喜欢的colormap类型
  2. cmap = colormap;可以返回该colormap的cmap值,若有多个坐标区域,注意要标明在哪个坐标区域
  3. caxis可以设置colorbar对应的颜色范围,如<图像一览>中采用的是15~55,那对应1中n的设置最好是(55-15+1)的整倍数
  4. 根据相应的大小提取RGB数组,如要选择风速为20时候colorbar对应的RGB数组,ci=cmap((20-14),:)
  5. 通用公式:已设置colormap颜色数n,caxis范围[a1,a2],当数值为A时的RGB为:ci=cmap((A-a1+1)*(n/(a2-a1+1)),:)
    -------注意上述通用公式只是一个总结,不一定完全适用于所有的情况,在使用过程中要抓住两个要点,① colormap不是完全连续的,colormap(n),是把颜色谱分成n段;②提取colormap后,根据自己的选出的值会落在那个段中决定,然后选择相应的顺序。[修正于2019/04/29]

这篇关于matlab画台风轨迹图小tip的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/556112

相关文章

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

轨迹规划-B样条

B样条究竟是干啥的?白话就是给出一堆点,用样条的方式,给这些点连接起来,并保证丝滑的。 同时B样条分为准均匀和非均匀,以下为准均匀为例。 参考链接1:https://zhuanlan.zhihu.com/p/50626506https://zhuanlan.zhihu.com/p/50626506 参考链接2: https://zhuanlan.zhihu.com/p/536470972h

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

全英文地图/天地图和谷歌瓦片地图杂交/设备分布和轨迹回放/无需翻墙离线使用

一、前言说明 随着风云局势的剧烈变化,对我们搞软件开发的人员来说,影响也是越发明显,比如之前对美对欧的软件居多,现在慢慢的变成了对大鹅和中东以及非洲的居多,这两年明显问有没有俄语或者阿拉伯语的输入法的增多,这要是放在2019年以前,一年也遇不到一个人问这种需求场景的。 地图应用这块也是,之前的应用主要在国内,现在慢慢的多了一些外国的应用场景,这就遇到一个大问题,我们平时主要开发用的都是国内的地

libsvm在matlab中的使用方法

原文地址:libsvm在matlab中的使用方法 作者: lwenqu_8lbsk 前段时间,gyp326曾在论坛里问libsvm如何在matlab中使用,我还奇怪,认为libsvm是C的程序,应该不能。没想到今天又有人问道,难道matlab真的能运行libsvm。我到官方网站看了下,原来,真的提供了matlab的使用接口。 接口下载在: http://www.csie.ntu.edu.

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数_matlab pmsm-CSDN博客

MATLAB层次聚类分析法

转自:http://blog.163.com/lxg_1123@126/blog/static/74841406201022774051963/ 层次聚类是基于距离的聚类方法,MATLAB中通过pdist、linkage、dendrogram、cluster等函数来完成。层次聚类的过程可以分这么几步: (1) 确定对象(实际上就是数据集中的每个数据点)之间的相似性,实际上就是定义一个表征

MATLAB的fix(),floor()和ceil()函数的区别与联系

fix(x),floor(x)和ceil(x)函数都是对x取整,只不过取整方向不同而已。 这里的方向是以x轴作为横坐标来看的,向右就是朝着正轴方向,向左就是朝着负轴方向。 fix(x):向0取整(也可以理解为向中间取整) floor(x):向左取整 ceil(x):向右取整 举例: 4个数:a=3.3、b=3.7、c=-3.3、d=-3.7 fix(a)=3 fl

MATLAB中的eig函数

在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有5种: E=eig(A):求矩阵A的全部特征值,构成向量E。 [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。 [V,D]=eig(A,'nobalance'):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特