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

M_map工具包函数研究

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1 q% r7 M8 W# W. t5 l8 b" B
m_map可以画出很漂亮的图0 L* r9 g' y9 }! C8 C1 Q* S

+ W8 o5 _4 t  p! l如果想在m_map的指定投影上画图必须使用m_text,m_quiver,m_pcolor等前面加了‘m_'的函数,那么这些函数与text,quiver,pcolor等普通matlab函数有什么区别呢?让我来分析一下m_plot的代码为大家解答吧。* Q  U8 o: `3 [. L# ?* i( H

/ k( A. e3 Y1 v' U; k8 K5 Am_plot代码如下:
% Q4 _4 T' _8 \0 M% G$ z
' e3 u- C1 _2 r: ~! L  N0 _function han = m_plot(varargin)4 Q) U- j. r, l9 z

' y) L) o2 W9 _: t) `* P' C/ {%将用户输入参数放在varargin中,这个varargin是个大小可变的cell数组,
5 q8 C5 w' K# U2 ?$ A) u3 I( F* ^" A# J# ^
%这样设计的好处是m_plot就和plot一样是一个输入参数可变的函数了
$ l0 f' y0 t+ @8 B+ |global MAP_PROJECTION MAP_VAR_LIST
! j* }9 c1 I! r& tif isempty(MAP_PROJECTION),  %判断有没有设定投影方式( i1 O* [5 {6 w1 U0 Q, Q7 z% P
  disp('No Map Projection initialized - call M_PROJ first!');
" a3 D4 Q4 U; x( w' o2 [9 H: I; d  return;
( Q! }4 k, S& h3 u5 M; X" Eend;9 m. G* }9 @9 @$ ?* t
if nargin < 2;  %判断输入参数的个数,小于2的话就好好查看一下m_plot函数的用法
; F% W/ M0 N2 Z4 x  help m_plot
: }9 e  L4 z. ~8 }$ u  return
. K, T, s2 h4 C/ b* `end
8 H2 |6 Y! |% y[x,y] = m_ll2xy(varargin{1},varargin{2});% x2 z+ A5 E( d" b1 u. E9 [8 J9 u" o

7 w2 C) h; x+ [1 {, [0 v% p- h$ T%m_ll2xy这个函数会根据当前投影的方式将varargin{1},varargin{2}也就是笛卡尔坐标系的横纵坐标进行转化! w( G, M5 k8 Q0 B) y; _. M
varargin = varargin(:); %将cell数组由一行变成一列0 i8 i5 G+ p5 I; K6 k
s = size(varargin,1); %s为cell数组的行数,也就是输入参数个数
2 {( p9 {; o% Z! N+ ~h=plot(x,y,varargin{3:s}); %调用plot函数,m_map里大部分函数都是如此,最终都要调用系统函数1 l& V# o' b8 {1 K/ q
if nargout == 1  %判断输出变量个数是否为1( y, o5 y$ K2 I6 `% t& j  U0 _
  han = h;1 l. \2 ~# N8 R$ H1 A
end  G! u4 B2 |9 i0 ^$ b/ M1 ~* E

0 k" Z+ }1 q$ G! P# w. ~return, e. Y# Y3 b! U4 }2 D2 p
- E! m/ p* |- R) y% m7 Q  d, T
既然明白了m_map的基本原理,我们就可以自己为m_map添加函数了,比如m_map工具包没有m_scatter, 没关系,我们可以自己写啊,很简单的!: r1 Y4 t0 r. s' f0 x+ o, v
& E  g* V8 R: }
function han = m_scatter(varargin)
7 }. C* l: z3 r2 ~/ ]1 C4 k% Z* e% written by Haidong Pan (Ocean University of China) 潘海东 (中国海洋大学)1 [. k; ?; A) u7 Z$ q
% email: panhaidong_phd@qq.com
& u% s& x6 T2 o" ^+ r- o, y" u/ S  K# U" o* R1 j* t( }4 r1 h
global MAP_PROJECTION MAP_VAR_LIST
' _- i: D1 G, G. W% Z; S6 S( F
0 r( K# I7 ~! N8 h5 _, A7 gif isempty(MAP_PROJECTION),2 e1 v0 B: v4 k; L" J, w: G
  disp('No Map Projection initialized - call M_PROJ first!');
; z, K8 V- _; H1 f. Z8 O  return;6 i3 {3 k& e, g4 R
end;
3 }6 o+ J" ~! s4 {% H5 _$ B! i4 F7 J8 x7 }5 \. G5 z
[x,y] = m_ll2xy(varargin{1},varargin{2});
( I  G( `3 x3 g  c9 n5 Pvarargin = varargin(:);% U& }, }1 @, Q4 d3 z2 X' J7 `
s = size(varargin,1);4 `8 e. e6 ^" i6 k4 H& ?! X
h=scatter(x,y,varargin{3:s});! b/ }+ X. X/ `: \
if nargout == 1
0 r" ^# P) J8 ]8 b& f: ?  han = h;$ M: E. P  B, }+ i0 ~4 |
end
# y2 H# y7 ~# R! c0 {2 g* X' i
* O# u, y1 I+ b4 R. \# j- e2 Greturn

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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