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

M_map工具包函数研究

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
, r4 @& v8 J1 {* y
m_map可以画出很漂亮的图
$ Y0 T4 g" y" A
$ f7 Y: X3 [) B, X4 T7 U如果想在m_map的指定投影上画图必须使用m_text,m_quiver,m_pcolor等前面加了‘m_'的函数,那么这些函数与text,quiver,pcolor等普通matlab函数有什么区别呢?让我来分析一下m_plot的代码为大家解答吧。
$ l. a6 b2 @/ b. N5 m; O6 [% R
3 q: `1 R% I3 P' s8 ?4 tm_plot代码如下:
% u( K9 W- t1 t# m. @0 s/ u
1 a" y: K2 L5 C  L! c. lfunction han = m_plot(varargin): b; J) B! |6 e/ k

- ~4 X: I4 y0 v* Y2 _1 D3 Y7 |* a%将用户输入参数放在varargin中,这个varargin是个大小可变的cell数组,
5 y9 X% ?7 ?" X) u+ j2 ?9 V% J4 m$ s" @
%这样设计的好处是m_plot就和plot一样是一个输入参数可变的函数了
; y4 N& _" C8 I+ V! D! A$ s9 gglobal MAP_PROJECTION MAP_VAR_LIST
( K" k" k6 ?' o/ }$ T' @7 i, ^9 oif isempty(MAP_PROJECTION),  %判断有没有设定投影方式
) t8 Y0 H- L% [  disp('No Map Projection initialized - call M_PROJ first!');: h: B" R# j% n9 B1 C8 @; U4 i3 v
  return;
" \/ G0 S% ?6 O3 A; R; K0 yend;
0 R" i6 [: {4 |1 w+ z% l. cif nargin < 2;  %判断输入参数的个数,小于2的话就好好查看一下m_plot函数的用法1 k  j2 z1 ~, I. w, p9 l( f4 h8 G
  help m_plot
2 |0 O5 j% [: S" R$ y  return* b% X3 k6 l6 P/ ]% X% M8 l- Z
end; }" i4 E# {" |: \" P# D
[x,y] = m_ll2xy(varargin{1},varargin{2});8 G" d/ B2 O- {5 m" j, V* m1 Z9 ^
8 t3 ?0 t& Q$ R
%m_ll2xy这个函数会根据当前投影的方式将varargin{1},varargin{2}也就是笛卡尔坐标系的横纵坐标进行转化
* g4 p: `1 }# ovarargin = varargin(:); %将cell数组由一行变成一列* ~# Y. y9 K3 e( g; ^  |3 P% {
s = size(varargin,1); %s为cell数组的行数,也就是输入参数个数' v( Y5 v/ v$ H
h=plot(x,y,varargin{3:s}); %调用plot函数,m_map里大部分函数都是如此,最终都要调用系统函数: I8 G/ u" e& Z9 I. I4 T  N* E
if nargout == 1  %判断输出变量个数是否为1
  v- k- S0 L3 F8 S( b  han = h;: `- E# B0 m$ d+ W! E
end
6 D9 @, G; p+ Y- _1 \4 [6 f+ g8 W+ D: a# ~0 s6 T; V
return
2 C' @' O* `% l! f, m4 w9 h
+ k( n. X; r$ W* m# d 既然明白了m_map的基本原理,我们就可以自己为m_map添加函数了,比如m_map工具包没有m_scatter, 没关系,我们可以自己写啊,很简单的!
. x% Z2 r1 N, m* L! a+ ?: y! y1 }$ M
function han = m_scatter(varargin), M- O" d2 p# x- g$ x
% written by Haidong Pan (Ocean University of China) 潘海东 (中国海洋大学)" D" l* i% u' q+ I. w
% email: panhaidong_phd@qq.com
0 C& {3 e' Q; O" x: o+ y* Q* {
+ {4 x  X, [; x& M) l$ ?( [  Sglobal MAP_PROJECTION MAP_VAR_LIST( G- K- b! m7 O; }8 `

. d$ K% S3 M$ n, x5 s& Yif isempty(MAP_PROJECTION),! G7 s; u' k6 j: i9 x% \+ z
  disp('No Map Projection initialized - call M_PROJ first!');
4 n5 t* H! m" N# j' ^! D  return;& L1 a$ Y, m0 k! h2 M2 A% [
end;
( t9 ~. \) \/ m  t1 h# P' e3 z' h" E2 |! E$ R. U% e
[x,y] = m_ll2xy(varargin{1},varargin{2});
% o; I9 `4 h9 ^# p7 D/ ?0 Ovarargin = varargin(:);
# M" J& k2 L1 as = size(varargin,1);0 r& c0 b1 v8 o8 n
h=scatter(x,y,varargin{3:s});
  A  j; P  W9 |* T6 p4 Kif nargout == 1
) |: s4 w( J# x: [* H  han = h;
: v# C2 r! `) B2 o% d0 Fend: S- Z9 u7 M# ~
) @4 ^, r; q4 O9 A) O; ?" Q
return

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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