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

M_map工具包函数研究

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
- J' b# t7 Q2 E1 f: R8 i8 ]) Z
m_map可以画出很漂亮的图  x0 `  p6 M2 g7 E" v" L& B

' l/ H5 p* G3 I) g  O如果想在m_map的指定投影上画图必须使用m_text,m_quiver,m_pcolor等前面加了‘m_'的函数,那么这些函数与text,quiver,pcolor等普通matlab函数有什么区别呢?让我来分析一下m_plot的代码为大家解答吧。2 t  S1 G  P8 o8 v% b. L$ K( c/ J; V
& {( n& P  V3 ]7 J5 C
m_plot代码如下:
  A" ]6 k- h+ R' y$ f: X8 C5 l, r* f; m  r9 _
function han = m_plot(varargin)
  l6 m7 ?6 h7 G5 c  Z
. f6 U- \7 Q* l) e' |* K%将用户输入参数放在varargin中,这个varargin是个大小可变的cell数组,; y4 M$ d: e! q( P

7 s! H# f9 W& y7 J* ?- E4 F: u2 g' Y%这样设计的好处是m_plot就和plot一样是一个输入参数可变的函数了
- _3 O* W# O' o7 `* b4 oglobal MAP_PROJECTION MAP_VAR_LIST
) \5 ]& F- A0 R4 t, F) F- mif isempty(MAP_PROJECTION),  %判断有没有设定投影方式
& N. U, B/ k7 @. E; E  disp('No Map Projection initialized - call M_PROJ first!');
( l' P6 O0 [, K  return;
$ X$ x1 t2 Z4 A  _6 l, Rend;6 b$ K7 [" {" G- U' D/ c, m$ `
if nargin < 2;  %判断输入参数的个数,小于2的话就好好查看一下m_plot函数的用法
! U6 l% h& p3 k1 ^% {5 [  help m_plot
; j# ^# |$ [) e. l' l+ Y  return
, ?0 l% E. O4 m# O& [  X$ V- Send
6 w% c; M" R1 q[x,y] = m_ll2xy(varargin{1},varargin{2});
/ X5 j' e* _% I7 w
9 |- \4 X9 \6 Z$ S( i! i3 H%m_ll2xy这个函数会根据当前投影的方式将varargin{1},varargin{2}也就是笛卡尔坐标系的横纵坐标进行转化: p, ~5 j3 }7 d: z! H1 N
varargin = varargin(:); %将cell数组由一行变成一列
9 E8 z6 k1 I) D. \$ s; g' js = size(varargin,1); %s为cell数组的行数,也就是输入参数个数5 {: t* Q8 m3 G& t
h=plot(x,y,varargin{3:s}); %调用plot函数,m_map里大部分函数都是如此,最终都要调用系统函数
7 w# M1 f/ [+ p5 t( Nif nargout == 1  %判断输出变量个数是否为1
- z$ I) a( O: V  han = h;+ E2 x& O! c, _. d& _$ b6 i
end
: [$ r- d2 g3 l# l- I' l* d8 d8 u3 `+ y# Y8 r; ^
return
) P6 J/ Z6 @, k2 F
. U1 ^6 U7 M" Z) Y) w: S7 J  c 既然明白了m_map的基本原理,我们就可以自己为m_map添加函数了,比如m_map工具包没有m_scatter, 没关系,我们可以自己写啊,很简单的!3 g6 S+ r! v) w7 C

. _# s+ @" ^4 H& t) |  I: n# ffunction han = m_scatter(varargin)
/ Z9 u/ G+ @. H1 P% R8 w  M( j% written by Haidong Pan (Ocean University of China) 潘海东 (中国海洋大学)
, n7 ~, w- o% _! t% email: panhaidong_phd@qq.com$ }0 U2 X( M" [! S# I

2 s+ G; q* g( N1 hglobal MAP_PROJECTION MAP_VAR_LIST7 n" S9 S% s- J6 S# g' c0 {% m. {
) W0 v8 x3 A% L) ?2 X1 }# d/ z
if isempty(MAP_PROJECTION),. H& x  p0 p3 H3 S1 i1 S
  disp('No Map Projection initialized - call M_PROJ first!');1 \5 g) H  d$ f* x9 r) ^1 z% u
  return;
4 n. k7 z5 a2 p9 s; N% @end;
$ e. u5 u9 N' w/ T# [+ c2 A8 y/ R* b1 ~' _/ Y' {- d+ W
[x,y] = m_ll2xy(varargin{1},varargin{2});
. F8 v% \1 L# m* Q! U5 X% mvarargin = varargin(:);
, T8 g. E5 l& W* o/ t1 vs = size(varargin,1);  w" z& F1 m% g; h
h=scatter(x,y,varargin{3:s});
* Y: v. m+ m3 O# O) _( b  |if nargout == 1
8 _; Y) @4 B  X  han = h;
' m3 o- _* ~! f% _! Y+ nend
( }5 \. w4 Z6 D" s9 |
5 M' G2 b9 y! n% e: treturn

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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