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

M_map工具包函数研究

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
$ ^- A/ H/ P: s* b: |' k
m_map可以画出很漂亮的图
5 `" z- r0 P3 s( \( S) o
( O9 `2 d0 B0 ]1 C* N* v* b9 M+ o3 u如果想在m_map的指定投影上画图必须使用m_text,m_quiver,m_pcolor等前面加了‘m_'的函数,那么这些函数与text,quiver,pcolor等普通matlab函数有什么区别呢?让我来分析一下m_plot的代码为大家解答吧。
# c1 j( k3 |8 H; R; o6 Y' ?+ M1 Z6 u8 j, D3 o7 `! l- e
m_plot代码如下:
( n; I# Y" d4 s) q- N6 ^) I0 U" k) u; u- s% \
function han = m_plot(varargin), X4 C* l( F+ A

% d4 b1 z* G) v7 D%将用户输入参数放在varargin中,这个varargin是个大小可变的cell数组,3 ^, i) z! g0 p3 `: ?; Q

+ ?4 `( _! A0 J! Q%这样设计的好处是m_plot就和plot一样是一个输入参数可变的函数了8 C. d$ L- T/ q6 `( u! t9 E
global MAP_PROJECTION MAP_VAR_LIST6 _3 K" s1 M& ?* x1 I2 b# d
if isempty(MAP_PROJECTION),  %判断有没有设定投影方式; T: V! r5 K% i; @% j
  disp('No Map Projection initialized - call M_PROJ first!');4 T" `$ _) u* Z! l
  return;, d- J; S' c' n, x
end;/ ^& J6 s: P# J; u9 Z
if nargin < 2;  %判断输入参数的个数,小于2的话就好好查看一下m_plot函数的用法$ K7 f  `$ c# M) C( B% I+ d6 v  v
  help m_plot
% `4 k. y. \; [# O  return/ K/ J6 B* w* ~1 d- ]% N
end/ ]8 n5 `! ~1 U; F3 o' ]% E
[x,y] = m_ll2xy(varargin{1},varargin{2});0 G  ]4 T: h0 `4 T: m" m6 q

- p; ~& G; C: p: n8 q& r% o%m_ll2xy这个函数会根据当前投影的方式将varargin{1},varargin{2}也就是笛卡尔坐标系的横纵坐标进行转化: {* ]1 x0 }3 w! p5 u( J; ?; Q
varargin = varargin(:); %将cell数组由一行变成一列
8 D4 ?/ {8 \5 _8 Y" }  d, s0 v; i* {s = size(varargin,1); %s为cell数组的行数,也就是输入参数个数( t6 B2 h# \3 C+ X' K: K
h=plot(x,y,varargin{3:s}); %调用plot函数,m_map里大部分函数都是如此,最终都要调用系统函数6 u4 T5 v* {  }" i$ _+ D
if nargout == 1  %判断输出变量个数是否为1" |2 c+ c; e# w" T. X+ `
  han = h;/ `  G0 ~( }+ k; \/ A) L
end3 |" S9 X: j8 w( {& Y1 w

! w& ~! C! g. Q$ ], B4 zreturn/ V' d# H0 j7 I1 K9 ?) U

3 ?- l# H* o( G 既然明白了m_map的基本原理,我们就可以自己为m_map添加函数了,比如m_map工具包没有m_scatter, 没关系,我们可以自己写啊,很简单的!* {+ v* c6 x) v3 Q7 b( l
  }2 K, Y  \& D( h  j) {
function han = m_scatter(varargin)
* B. s3 C$ Q& C# C- t% written by Haidong Pan (Ocean University of China) 潘海东 (中国海洋大学)
2 l- L- {) b! d& C# J& C% email: panhaidong_phd@qq.com
7 w5 G$ d  q9 C0 y9 ~* Q8 [) s9 X
global MAP_PROJECTION MAP_VAR_LIST) x$ b9 Y, f/ M, C* n
4 t  `3 }5 W! C
if isempty(MAP_PROJECTION),
- }  C* B8 }1 p9 T/ y" R2 F  disp('No Map Projection initialized - call M_PROJ first!');
' p; n% X' w5 h) [. y  return;
" g. I! Y' P& r: Yend;$ S  i5 B/ E$ G. s- I& G7 U# R

2 @0 x) S: G! J0 ]$ _1 S$ A[x,y] = m_ll2xy(varargin{1},varargin{2});) C1 E( f8 ^& Z
varargin = varargin(:);3 H( T% i4 s% G, |6 q
s = size(varargin,1);
: H' o7 F2 D1 K! P5 z) ~h=scatter(x,y,varargin{3:s});
8 h3 A* f/ U# I( ]& V5 Y& R8 Fif nargout == 1
, o1 |7 I5 j  V% g" H/ Z) O2 w  han = h;# h9 w0 v7 q7 r- c$ A
end" F- K9 u% I$ d; @- ^2 p3 T
$ V) z% M: w, a. e3 o. B
return

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 07:37 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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