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

M_map工具包函数研究

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

4 l" }# l4 L7 n9 T  Jm_map可以画出很漂亮的图
; E8 s' R" L: l
( }9 q# Z" B* [0 h7 f* U如果想在m_map的指定投影上画图必须使用m_text,m_quiver,m_pcolor等前面加了‘m_'的函数,那么这些函数与text,quiver,pcolor等普通matlab函数有什么区别呢?让我来分析一下m_plot的代码为大家解答吧。
2 z. b, G& @# ?3 Q$ ^8 {
' e( B; n1 m! lm_plot代码如下:. W' K4 Z( B) [# B* `7 v

( w& H2 J9 k% Rfunction han = m_plot(varargin): v- u9 i( j, Q3 I$ V# g

" C' K  v+ B1 W5 R%将用户输入参数放在varargin中,这个varargin是个大小可变的cell数组,7 S( i, }, z+ q4 b" Y
3 g% q% {9 j1 H8 j) t
%这样设计的好处是m_plot就和plot一样是一个输入参数可变的函数了
1 m, l% _* {8 h" Z; {global MAP_PROJECTION MAP_VAR_LIST
3 d, e0 G9 V% M9 ~( F  Uif isempty(MAP_PROJECTION),  %判断有没有设定投影方式* c3 a, X! }1 |: M- J+ N" w5 N& [
  disp('No Map Projection initialized - call M_PROJ first!');
3 T. {4 c6 }- C$ @& y  return;
( @; c$ L, }/ t. g0 j* mend;& k" Z6 W. H& y' V
if nargin < 2;  %判断输入参数的个数,小于2的话就好好查看一下m_plot函数的用法( i/ B3 P9 d6 J$ ^! C2 t
  help m_plot) D3 _. Q9 I  t  F% H9 b
  return$ M5 b: o1 p% @! O! W: x  L& B
end
, r; c% f5 s; K! l. A[x,y] = m_ll2xy(varargin{1},varargin{2});
) o7 O- x: g1 [9 K( R. P
( E" `( p" _! [% L6 ~+ S! y%m_ll2xy这个函数会根据当前投影的方式将varargin{1},varargin{2}也就是笛卡尔坐标系的横纵坐标进行转化
$ W2 v3 ~# W! X, f! ?varargin = varargin(:); %将cell数组由一行变成一列
9 i. K' Y- N3 y8 }. H6 K+ P" C' E( {s = size(varargin,1); %s为cell数组的行数,也就是输入参数个数# @) h. F2 L% N
h=plot(x,y,varargin{3:s}); %调用plot函数,m_map里大部分函数都是如此,最终都要调用系统函数
9 x) B( q1 j/ X  z" cif nargout == 1  %判断输出变量个数是否为1
; h6 s# g$ i) X' i) X  I6 T* N  han = h;
. d1 c" q/ Q; N8 @end$ L2 F- X8 m. k: f1 l
+ o3 ?% z- K: D: v
return7 T  N. Y9 k# k+ S
, X7 U" f- ^" c" A
既然明白了m_map的基本原理,我们就可以自己为m_map添加函数了,比如m_map工具包没有m_scatter, 没关系,我们可以自己写啊,很简单的!
) I7 y, D: ^# p$ t6 A: G1 E" P
6 `/ h( d2 W9 o) n2 Rfunction han = m_scatter(varargin)
" k" Q( l0 W8 u4 D* e% written by Haidong Pan (Ocean University of China) 潘海东 (中国海洋大学)
6 [% ^: H! n0 I% b* _( W% email: panhaidong_phd@qq.com
( i0 i  X7 I: u! c/ a. K9 D/ V+ ]1 M3 @' V! D! q9 r. M
global MAP_PROJECTION MAP_VAR_LIST  g. H, F6 I# W# ^

# Q1 ?! h  R: |8 Tif isempty(MAP_PROJECTION),4 E. R4 E( I) }
  disp('No Map Projection initialized - call M_PROJ first!');
% V. u) h& G; y5 C  return;
1 f1 R$ b1 e# a: ?, x; Uend;! S1 C5 K/ g1 H* G# P4 P

3 x/ G. L' Q% h, C( |6 N' F1 x3 [[x,y] = m_ll2xy(varargin{1},varargin{2});! N; i  U* }! Y& v$ }, \
varargin = varargin(:);2 L0 A8 [2 ?& ^/ W5 _" l6 ~9 a
s = size(varargin,1);
, I5 q. G5 Z  Gh=scatter(x,y,varargin{3:s});
9 L  Y: L' u" r  x" `6 @, Zif nargout == 1
: x- s: f" ]4 Y7 P3 J  han = h;( t  S: l* z, I
end
# b8 ~# U0 D5 U1 K* [% k, g
4 M& Y+ h' N2 }& c2 O6 n. }9 G. ~  _return

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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