Posts List

基于ThingSpeak生成Shields.io Dynamic Badge

公开的ThingSpeak Channel可以将频道的数据以xml或json格式输出,所以可以用其生成Shields.io Dynamic Badge。我丢了段读取我Telegram频道订阅数的MATLAB脚本到ThingSpeak,挂上TimeControl每隔20分钟跑一次,订阅数写进ThingSpeak Public Channel,就可以作一个动态展示Telegram频道订阅数的Shields.io Badge啦。

今日南海中尺度涡 (South China Sea Mesoscale Eddies Today)

近期有一个利用水下滑翔机观测中尺度涡的应用型海试,我一直在帮忙做观测方案设计。这期间每天必做的就是下载当天的准实时海表面高度异常资料,进行初步涡识别,然后成图 ,发给执行方供参考。为了节省这部分重复劳动占用的时间,我把整个过程在本地自动化(借助timer function),然后在码云代码仓库作自动线上发布与更新。

用MATLAB实现便便时间间隔的定期统计分析

为了达成如题的目的,实现方法已经有了早期的两个版本: 2014年:手机端手动输入便便时间,经Dropbox同步至本地PC;利用Windows计划任务定期执行统计分析的MATLAB脚本;将结果发邮箱,再利用IFTTT发Twitter上。(见Github) 2017年3月:应对Dropbox被墙,将便便时间记录放到Notepad上;MATLAB里利用正则把页面上的数据读下来,再进行统计分析;同样用Windows计划任务实现定期执行。 上述两个方案中最难坚持的部分在于:要打开手机浏览器,访问相应记录网页,再按10个数字手动输入便便时间。 去年10月搞定了第三版实现方法,借助Thingspeak数据上载的timestamp,完美回避手动输入时间数据;同时脚本执行也丢去了Thingspeak;分析结果推送则通过IFTTT的webhooks发至Telegram;Thingspeak还具备利用数据作图的功能。具体如下:

Call Bitly/Google URL shorten API in MATLAB

Bitly Bitly API document: /v3/shorten Matlab code:

利用MATLAB的Timer实现网络图片的定时下载

利用MATLAB的Timer实现网络图片定时下载的一个个例:

如何推广Telegram频道

新建立了一个MATLAB TIPS的Telegram频道,欢迎加入。 目前: po了好些自己以前用到的现成脚本、函数,或前人写的技巧、教程、文档上去; 基于RSS自动发布一些Matlab相关博客的最新日志链接; 欢迎作管理员共同打理,只要顺手把自己用上的网页url发上来就好。 建好后就经历了到处发小广告做宣传的过程,在此总结一番:

Matlab:如何以线上点的颜色表示强度

Matlab是一款极其好用的数学计算绘图软件。在科研用图绘制功能中,最常见的即为绘制等值线图,这也是一般同学们都掌握的。大家都知道,二维填充等值线图的coutourf(X,Y,Z,n)中,Z=f(X,Y)是一个矩阵,代表X,Y平面上的每一个点对应的值,颜色则表示该值的高低。也就是说,用这个画出来的是一个彩色的面,比如: 但是,如果Z是一维向量呢?如果我们手上就只有某些X,Y对应的Z值,也不能虚构其他的点值来添进,这时候我们想表示强度怎么办呢?用Plot3吗?没错Plot3确实可以,但3维图并不是很容易识别的。如果想以颜色表示该点某物理量的强度,那又怎么画呢? 本文就来告诉你,怎么实现点线中用点的颜色表示强度。科研中是会出现这种需要的,比方画卫星轨道、走航轨迹上一些诸如海表面高度、气溶胶浓度之类参量的时候。. 比方我们有三个一维向量:lon,lat,ssha,分别代表卫星高度计数据中的经度(microdegree)、纬度(microdegree)、海表面高度距平(cm)。用matlab散点图命令scatter即可达到我们的目的。命令格式是: scatter(X,Y,,,’’); – 点的大小控制,设为和X,Y同长度一维向量,则值决定点的大小;设为常数或缺省,则所有点大小统一。 – 点的颜色控制,设为和X,Y同长度一维向量,则色彩由值大小线性分布;设为和X,Y同长度三维向量,则按colormap RGB值定义每点颜色,[0,0,0]是黑色,[1,1,1]是白色。缺省则颜色统一。 – 点型:可选filled指代填充,缺省则画出的是空心圈。 这样,我们就可以得到以经纬度点的颜色表示海表面高度距平的图,使用命令: scatter(lon,lat,3,ssha); 得到图如下: 似乎不是特别直观,那么我们再利用m_map地图工具,将陆地绘制上。此时要注意以下几点: m_map中经纬以十进制数目表示,不是度分秒形式,且东经为正,西经为负。数据的经纬度一定要符合此形式。 m_map中投影地图的坐标并不是实际经纬,需要以m_ll2xy.m(就是longitude & latitude to x-y coordinates)将数据中的经纬转化为投影地图中可用的坐标。例如:>>[X,Y]=m_ll2xy(lon,lat); 命令实例: hold on m_proj(‘miller’,’lon’,[0 250],’lat’,[-80 80]); % 设置投影、经纬 m_coast(‘patch’,[.7 .7 .7],’edgecolor’,’none’); % 画岸界,填充大陆 m_grid(‘xlabeldir’,’end’,’fontsize’,10); % 显示网格,并显示label scatter(lon,lat,3,ssha); 得图: [教程完]其实很简单,但网络上关于这类画法的指导基本没有,所以稍稍写下,望能帮助到需要的人。