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

M_map工具包函数研究

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
2 G( H( `# {; g  f
m_map可以画出很漂亮的图
. @$ t6 E* G/ v3 Z0 _; p8 j3 Z7 t5 O9 E2 F# a7 K) n% |3 t
如果想在m_map的指定投影上画图必须使用m_text,m_quiver,m_pcolor等前面加了‘m_'的函数,那么这些函数与text,quiver,pcolor等普通matlab函数有什么区别呢?让我来分析一下m_plot的代码为大家解答吧。
6 K8 L: f; g/ k8 r! `% b; C8 b8 A" K; w
m_plot代码如下:
% S8 }- R; U5 P  O
" t+ M& l- \& @" Pfunction han = m_plot(varargin). b8 O9 U2 q4 Y. g

0 b& p& P0 A+ s7 \%将用户输入参数放在varargin中,这个varargin是个大小可变的cell数组,6 ?4 Q, u. s7 i, a0 b3 Q% F* a

4 _; x9 d+ X  T& O5 ?. j%这样设计的好处是m_plot就和plot一样是一个输入参数可变的函数了
2 }( q! [/ }/ f6 E5 M: @: T0 F! hglobal MAP_PROJECTION MAP_VAR_LIST+ ^( Y5 {0 p( h4 X: B1 _
if isempty(MAP_PROJECTION),  %判断有没有设定投影方式' N2 Y) p# z8 I) j! ~
  disp('No Map Projection initialized - call M_PROJ first!');: j* y/ S7 Z% L
  return;
. }8 L+ q% m( V% n# mend;' m) n+ T. y, _6 B9 V2 Y7 D) y$ m
if nargin < 2;  %判断输入参数的个数,小于2的话就好好查看一下m_plot函数的用法
3 C# e! c6 s' Y2 n; i' [  help m_plot
! j  s- p0 C! _; M9 ~& M. |  return
, {8 F! U4 Y/ vend) r& X0 b' L1 b- F% U8 R6 i* h. T4 e
[x,y] = m_ll2xy(varargin{1},varargin{2});: x$ N/ s! [( n+ W
- H* W5 A/ q4 P
%m_ll2xy这个函数会根据当前投影的方式将varargin{1},varargin{2}也就是笛卡尔坐标系的横纵坐标进行转化
+ C/ p4 f2 s2 I2 }5 Jvarargin = varargin(:); %将cell数组由一行变成一列
+ M5 X8 h" T9 j8 U! _s = size(varargin,1); %s为cell数组的行数,也就是输入参数个数% J! L7 \: g) _( V4 Y+ D
h=plot(x,y,varargin{3:s}); %调用plot函数,m_map里大部分函数都是如此,最终都要调用系统函数  W8 X/ l' K2 I+ S: N8 C$ A
if nargout == 1  %判断输出变量个数是否为1
4 S# G4 B5 U3 I5 k8 Z' x  han = h;
" F% D2 L: `* q" Pend6 J$ ~' S3 Z4 |8 K
) A* C( p2 M- f( {, W+ F+ g
return) y3 O$ ]+ i' X

' A% x* f1 }9 S2 k: [7 I% | 既然明白了m_map的基本原理,我们就可以自己为m_map添加函数了,比如m_map工具包没有m_scatter, 没关系,我们可以自己写啊,很简单的!" Q: w8 n* Y6 a
* S1 j) a0 a, s8 h7 b6 e% k4 i
function han = m_scatter(varargin)
6 `2 T8 w1 T  n+ ?9 R, b' ~% written by Haidong Pan (Ocean University of China) 潘海东 (中国海洋大学)
7 K) h! ~( N& @' i) S% email: panhaidong_phd@qq.com
) ~& b  A& G# o# N% _% d1 k7 W% n4 L$ {6 D  l7 G6 W: I/ [
global MAP_PROJECTION MAP_VAR_LIST5 t: H% W) |2 z! O
  K) e# B8 R3 w# {. |
if isempty(MAP_PROJECTION),3 n- I3 x$ Z, Q: ?" C. Z
  disp('No Map Projection initialized - call M_PROJ first!');
% H) j- t& c6 D  return;8 I$ v& U7 J% {$ S' D
end;
1 I/ i" P( C6 b2 B5 H9 q) a' _7 f& M: }  n% C
[x,y] = m_ll2xy(varargin{1},varargin{2});
6 p# c/ C( k2 z+ L& u$ Pvarargin = varargin(:);
+ b  X2 R& Y, V3 S( ss = size(varargin,1);. y8 c' y* ?: K: \% I. b
h=scatter(x,y,varargin{3:s});
9 Q1 k+ y9 e4 b- n% o# H7 Y5 Zif nargout == 1
/ K" W: L1 W% V( O  han = h;
1 Y+ M% c. R' W& l: Lend! B0 B% m4 P, s- D3 s% l7 b# U
* Q& ~% o  N7 r8 q4 q
return

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-2 06:03 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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