找回密码
 注册
关于网站域名变更的通知
查看: 653|回复: 1
打印 上一主题 下一主题

M_map工具包函数研究

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-20 11:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

7 C2 J, I! D6 n9 n# Nm_map可以画出很漂亮的图
( [9 N. c$ C  h2 p
7 ?% q- I6 `. H. Z* f3 ]# ~! A如果想在m_map的指定投影上画图必须使用m_text,m_quiver,m_pcolor等前面加了‘m_'的函数,那么这些函数与text,quiver,pcolor等普通matlab函数有什么区别呢?让我来分析一下m_plot的代码为大家解答吧。
; r9 q$ O! E( b# |( F% o0 H
8 Y! q* h, v/ _8 F2 Gm_plot代码如下:
: z9 l6 R8 R# F
7 Z5 P8 e  j) J9 h# Z' x) [' X4 w9 ?function han = m_plot(varargin). |( O( m8 {+ c$ K% W* t9 s& V
+ k  L- F" d; v1 A9 o: y$ V
%将用户输入参数放在varargin中,这个varargin是个大小可变的cell数组,
$ C  ^  c5 K5 U% t# e
) O) Q3 Y( s8 J, R1 X- W%这样设计的好处是m_plot就和plot一样是一个输入参数可变的函数了
# Q- e8 p$ ~$ n5 Dglobal MAP_PROJECTION MAP_VAR_LIST
  u, B! i& J3 x- s. aif isempty(MAP_PROJECTION),  %判断有没有设定投影方式
/ u4 W( e0 T7 j: m4 d$ H  disp('No Map Projection initialized - call M_PROJ first!');
! Z/ F0 j7 D4 ?/ x" w* e  return;0 G% L  k4 a8 z. P; J6 C, K
end;3 J# y3 j0 Q2 }7 Y. b
if nargin < 2;  %判断输入参数的个数,小于2的话就好好查看一下m_plot函数的用法
% Y/ ]5 e6 B. v! l# F3 E  help m_plot$ x6 {& `7 @, f0 y) w3 w
  return
# p5 `4 V+ E7 y' P: e' Rend
0 Z7 P% J/ Y" o% G2 ?[x,y] = m_ll2xy(varargin{1},varargin{2});
  z+ J. V! H) R
" d$ _1 W# Y! u/ J+ m, e" k! S%m_ll2xy这个函数会根据当前投影的方式将varargin{1},varargin{2}也就是笛卡尔坐标系的横纵坐标进行转化
  `7 d# P$ b' i1 v  i  W0 X6 Wvarargin = varargin(:); %将cell数组由一行变成一列
6 I* Q2 g. _2 f6 X6 }0 Bs = size(varargin,1); %s为cell数组的行数,也就是输入参数个数, ?& A# E* d% A9 B
h=plot(x,y,varargin{3:s}); %调用plot函数,m_map里大部分函数都是如此,最终都要调用系统函数( f" g+ H/ S2 p' I% N
if nargout == 1  %判断输出变量个数是否为1) Y0 A' B6 O1 [' C5 C1 [8 ?
  han = h;
9 Q; ]9 U5 _, |) |4 d8 S) X/ ]( Mend, B( b' B8 b' s/ _7 d6 n6 k

/ u5 ]6 ^) {! T1 F6 [1 G, N/ _/ qreturn# x3 q- b# d/ ?' J8 M- l

& t9 C. i3 b* R: J0 V& w+ y 既然明白了m_map的基本原理,我们就可以自己为m_map添加函数了,比如m_map工具包没有m_scatter, 没关系,我们可以自己写啊,很简单的!
* }" F7 M; Q: ^$ t- ^" L( N6 b2 u2 O6 w, m& P9 @! k3 j3 q
function han = m_scatter(varargin)0 |8 m8 n7 Z- U" N8 o  z! x
% written by Haidong Pan (Ocean University of China) 潘海东 (中国海洋大学)
1 f$ f- o$ w7 U8 s2 w% email: panhaidong_phd@qq.com
' x8 l9 \% Q8 C
9 ?/ N$ X. L# _, Iglobal MAP_PROJECTION MAP_VAR_LIST
( c6 V6 l' O9 g& \, J+ j3 |5 [5 y' V. t4 u; T$ D! b. N" i5 @, A
if isempty(MAP_PROJECTION),4 S1 |# ~7 ?9 g, q
  disp('No Map Projection initialized - call M_PROJ first!');4 e4 R% x# u7 F# u( d9 y
  return;7 r  P6 |& q+ \4 D! l- G. p
end;
% P/ E: R5 s, Q" y; O+ ?1 c2 b. B) I) B! N1 J. f5 M: V9 ?/ d
[x,y] = m_ll2xy(varargin{1},varargin{2});3 Z( n5 j; c. X; M9 J& ?
varargin = varargin(:);& e+ ~7 y" p* z! o1 k, d7 S
s = size(varargin,1);; y# ^" l/ T; x( g
h=scatter(x,y,varargin{3:s});6 Z" p9 `, i$ Q% @( I% z, q
if nargout == 1
; r$ i; v  x5 U0 i9 C) a  han = h;# ?' w& L7 G0 m6 l
end; k. i  j! E5 @0 M9 ]+ a% T
- S% o: r, e& Q9 ?& c3 ^8 n) T
return

该用户从未签到

2#
发表于 2020-3-20 18:13 | 只看该作者
M_map工具包函数研究
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-24 20:56 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表