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

M_map工具包函数研究

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
3 u5 Q/ r( x5 f, u1 \
m_map可以画出很漂亮的图2 U4 |& J  G8 \% ^; e! u" a9 |
5 B! S# E4 u: n  q- I
如果想在m_map的指定投影上画图必须使用m_text,m_quiver,m_pcolor等前面加了‘m_'的函数,那么这些函数与text,quiver,pcolor等普通matlab函数有什么区别呢?让我来分析一下m_plot的代码为大家解答吧。  K% i0 v# h3 I+ R  b
  G; h- S. a- W) X% _
m_plot代码如下:8 h8 Z( L$ Z; e) H* u$ _1 f7 I
& S0 P! c9 N+ d' a  R7 n
function han = m_plot(varargin)) V( {1 E% R; \- q) ?
. P1 O( n: O5 F* _  [
%将用户输入参数放在varargin中,这个varargin是个大小可变的cell数组,1 }& v: r+ A6 g% u% j
& d/ ~" x5 ~' `
%这样设计的好处是m_plot就和plot一样是一个输入参数可变的函数了  ?% S, Q* O4 i! d8 Z9 m8 `
global MAP_PROJECTION MAP_VAR_LIST. C. s6 e/ M8 P+ w5 C0 P3 h+ ?$ I4 ^
if isempty(MAP_PROJECTION),  %判断有没有设定投影方式
3 F- x/ F* V% t5 c  ]/ P1 I) ]  disp('No Map Projection initialized - call M_PROJ first!');1 {( }% L9 Y2 X& d2 M- G. n
  return;# O3 ?$ @/ u6 _9 U# A$ p
end;6 r8 T1 Q6 P4 O6 v; F
if nargin < 2;  %判断输入参数的个数,小于2的话就好好查看一下m_plot函数的用法9 x) \; F, }5 l3 Y+ W" Y3 \3 q
  help m_plot! E, B2 k% d# ]" R
  return7 I4 e2 h# l: }
end$ e/ q5 v* W  x* [: _
[x,y] = m_ll2xy(varargin{1},varargin{2});- `; u( h1 i- W. ]. y7 Y$ o" V

, {; A" q% v0 U5 N; x" F+ X%m_ll2xy这个函数会根据当前投影的方式将varargin{1},varargin{2}也就是笛卡尔坐标系的横纵坐标进行转化2 @* R* t9 S6 u" J/ }
varargin = varargin(:); %将cell数组由一行变成一列, B7 g5 W. D$ e* y% F
s = size(varargin,1); %s为cell数组的行数,也就是输入参数个数3 Z0 `3 W1 r7 S! k7 N- e
h=plot(x,y,varargin{3:s}); %调用plot函数,m_map里大部分函数都是如此,最终都要调用系统函数0 i, x* {) K8 k1 c5 k; P' O4 m
if nargout == 1  %判断输出变量个数是否为1
6 a, K9 L) g" U) N  han = h;
: g# n  s* N: U. t5 Z9 `end
3 s" Y6 U3 ]  _9 V0 P; Z  H0 T
return
8 r) w! U1 J4 g) M6 W0 K, R2 B, g
2 H1 w; S5 w8 Y1 H; b, L8 u7 d 既然明白了m_map的基本原理,我们就可以自己为m_map添加函数了,比如m_map工具包没有m_scatter, 没关系,我们可以自己写啊,很简单的!
7 S) v: a6 J1 x3 ^! R1 W
; j4 Y# O. ?- _, K4 B' bfunction han = m_scatter(varargin)
. U7 k# D2 T4 K% written by Haidong Pan (Ocean University of China) 潘海东 (中国海洋大学)  l! z" D/ k+ j3 X* _
% email: panhaidong_phd@qq.com
/ V* D: b% B& Y! Z8 N8 }2 R' g+ X1 t& b. r
global MAP_PROJECTION MAP_VAR_LIST
+ H) ^8 r: [/ ^& i+ {! B; l. S
; e- Q6 O+ l. s- H. e+ L  u" h8 kif isempty(MAP_PROJECTION),: q1 w' M, v# R+ z3 H$ N3 x
  disp('No Map Projection initialized - call M_PROJ first!');
/ O4 s! |& _" P% p8 R  return;3 e  [5 o6 n2 g. S2 p
end;
& a' t# r* t5 a, f6 v$ i8 H. Z# y' p" M& b! I( R. r
[x,y] = m_ll2xy(varargin{1},varargin{2});
6 r( m# n1 T5 W' @( ]7 s5 Fvarargin = varargin(:);  E; k3 w& J2 _: m! ?( q1 N
s = size(varargin,1);- s- k5 e  \: f
h=scatter(x,y,varargin{3:s});
6 L- o, G& U! `if nargout == 11 a- g5 t3 ]* n. s3 x
  han = h;
' r: o9 n0 O" s  Zend& K, {3 v8 \2 v' y
. R% ^% M: U0 R$ s
return

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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