一、圆形区域的画图

1、

  1. clear all
  2.  
  3. LATLIMS=[14 22];
  4. LONLIMS=[108 118];%南海边界范围
  5. m_proj('miller','lon',LONLIMS,'lat',LATLIMS);%投影模式
  6. m_coast('patch',[0.1 0.7 0.4]);%绿色填充
  7. m_grid('box','fancy','tickdir','in');%没有网格,边框相间,%m_line(lon,lat,'linewi',2,'color','r','linestyle',':');控制线条格式,点画线还是直线
  8.  
  9. lon=112:1:116;
  10. lat=16:1:20;
  11. m_line(lon,lat,'linewi',2,'color','r');%线宽,2;颜色
  12.  
  13. [X,Y]=m_ll2xy(117,21);
  14. line(X,Y,'marker','.','markersize',24','color','r')%画点

2、距离

  1. clear all
  2. %distance用法
  3. arclen=distance([37,0],[35,0])%返回两点间的相对球心的角度,以度为单位
  4. d=distance([37,0],[35,0],6371)% [纬度,经度] [纬度,经度] [半径]
  5. D=(arclen/180)*pi*6371
  6. %m_map中函数
  7. dist=m_lldist([0 0],[35 37])%[经度 经度] [纬度 纬度]

3、

  1. %画出矩形散点图和圆形图
  2. clear all
  3.  
  4. LATLIMS=[14 22];
  5. LONLIMS=[108 118];%南海边界范围
  6. m_proj('lambert','lon',LONLIMS,'lat',LATLIMS);%投影模式
  7. m_coast('patch',[0.1 0.7 0.4]);%绿色填充
  8. m_grid('box','fancy','tickdir','in');%没有网格,边框相间,%m_line(lon,lat,'linewi',2,'color','r','linestyle',':');控制线条格式,点画线还是直线
  9.  
  10. load EDH_south_sea_2008
  11. load coordi_south_sea_2008
  12.  
  13. m_range_ring(114.0623,17.9532,[1e2:1e2:3e2],'linewi',2,'color','b');%红色300km范围圆圈
  14.  
  15. % 矩形点阵
  16. range_lat=4:24;%21N15N对应的位置下标
  17. range_lon=20:40;%111.5E116.5E对应的下标
  18. for i=1:length(range_lon)
  19. for j=1:length(range_lat)
  20. [X,Y]=m_ll2xy(lon_south_sea(range_lon(i)),lat_south_sea(range_lat(j)));%化为x,y坐标
  21. line(X,Y,'marker','.','markersize',10,'color','k')%画点
  22. hold on
  23. end
  24. end
  25.  
  26. %离散圆
  27. [X0,Y0]=m_ll2xy(114.0623,17.9532);%圆心化为x,y坐标
  28. line(X0,Y0,'marker','.','markersize',15,'color','r');%画圆心
  29. DIST=m_lldist([114 115],[18 18])%经度加1度,增加的距离
  30. R=300;%300km
  31. [X1,Y1]=m_ll2xy(114.0623-R/DIST,17.9532);%找到300km的一个点
  32.  
  33. r=sqrt((X0-X1)^2+(Y0-Y1)^2);%地图距离到图上距离转换
  34. r=linspace(0,r,10);%等分成9
  35. for i=1:10
  36. theta=0:pi/45:2*pi;%360度,91个点。02pi
  37. x=X0+r(i)*cos(theta); %(X0,Y0)圆心
  38. y=Y0+r(i)*sin(theta);
  39. plot(x,y,'.','markersize',6,'color','r')
  40. end

  

4、pcolor

  1. clear all
  2. n =18;
  3. r = (0:n)'/n;
  4. theta = pi*(-n:n)/n;
  5. X = r*cos(theta);
  6. Y = r*sin(theta);
  7. C = r*cos(2*theta);
  8. pcolor(X,Y,C)
  9. axis equal tight
  10. colorbar
  11.  
  12. figure
  13. load PCOLOR %南海坐标和波导高度数据
  14. colormap('jet');
  15. shading flat;%平滑方式
  16. gca=pcolor(Plg,Plt,EDH_south_sea)
  17. set(gca, 'LineStyle','none');%去除网格
  18. axis equal tight %按比例展示
  19. colorbar %颜色条

  1. clear all
  2.  
  3. LATLIMS=[2 22];
  4. LONLIMS=[105 121];%南海边界范围
  5. m_proj('miller','lon',LONLIMS,'lat',LATLIMS);%投影模式
  6.  
  7. load coordi_south_sea_2008 %载入南海经纬度信息
  8. load EDH_south_sea_2008
  9. for i=1:length(lon_south_sea) %经度
  10. [X,Y]=m_ll2xy(lon_south_sea(i),12);%化为x,y坐标,12是纬度的平均值
  11. lon(i)=X;
  12. end
  13. for i=1:length(lat_south_sea) %经度
  14. [X,Y]=m_ll2xy(113,lat_south_sea(i));%化为x,y坐标,113是经度的平均值
  15. lat(i)=Y;
  16. end
  17.  
  18. [Plg,Plt]=meshgrid(lon,lat);%经纬度 形成网格
  19.  
  20. colormap('jet');
  21. shading flat;%平滑方式
  22. gca=pcolor(Plg,Plt,EDH_south_sea)
  23. set(gca, 'LineStyle','none');%去除网格
  24. axis equal tight %按比例展示
  25. colorbar %颜色条
  26.  
  27. m_coast('patch',[0.1 0.7 0.4]);%绿色填充
  28. m_grid('box','fancy','tickdir','in'); 

左右两幅图对比,左边是将经纬度换为xy值后画的图,更改绘图模式,利用pcolor画的,看出上边边缘有的吻合不是太好;右图是直接利用m_pcolor画的,吻合度更好

相当于载入了一幅地图,先将其经纬度化为正常的坐标,然后再在上面画图。

5、

  1. clear all
  2. n =6;
  3. r = (0:n)'/n;%0到6,半径上均分的数
  4. theta = pi*(-n:n)/n;%将整个圆分成了13分。
  5. X = r*cos(theta);
  6. Y = r*sin(theta);
  7. C = r*cos(2*theta);
  8. pcolor(X,Y,C)
  9. axis equal tight
  10. colorbar

角度逆时针转

半径分成了6份。

6、

  1. %温度绘图,只读取南海数据绘图
  2. clear all
  3. load EDH_south_sea_2008
  4. load coordi_south_sea_2008
  5. LATLIMS=[14 22];
  6. LONLIMS=[108 118];%南海边界范围
  7. m_proj('lambert','lon',LONLIMS,'lat',LATLIMS);%投影模式
  8.  
  9. hold on %一定要有,否则地图会被覆盖
  10.  
  11. %%
  12. %将经纬度换成坐标轴
  13. for i=1:length(lon_south_sea) %经度
  14. [X,Y]=m_ll2xy(lon_south_sea(i),18);%化为x,y坐标,12是纬度的平均值
  15. lon(i)=X;
  16. end
  17. for i=1:length(lat_south_sea) %经度
  18. [X,Y]=m_ll2xy(114,lat_south_sea(i));%化为x,y坐标,113是经度的平均值
  19. lat(i)=Y;
  20. end
  21.  
  22. %%
  23. %圆形点图数据
  24. %m_range_ring(114.0623,17.9532,[3e2],'linewi',2,'color','b');%红色300km范围圆圈
  25. %离散圆
  26. [X0,Y0]=m_ll2xy(114.0623,17.9532);%圆心化为x,y坐标
  27. %[X0,Y0]=m_ll2xy(114.0623,5);%圆心化为x,y坐标
  28. %line(X0,Y0,'marker','.','markersize',15,'color','r');%画圆心
  29. DIST=m_lldist([114 115],[18 18]);%经度加1度,增加的距离
  30. R=300;%300km
  31. [X1,Y1]=m_ll2xy(114.0623-R/DIST,17.9532);%找到300km的一个点
  32. %[X1,Y1]=m_ll2xy(114.0623-R/DIST,5);%找到300km的一个点
  33. theta=0:pi/45:2*pi;%360度,91个点。02pi
  34. r=sqrt((X0-X1)^2+(Y0-Y1)^2);%地图距离到图上距离转换
  35. r=linspace(0,r,10);%等分成10
  36. %theta=0:pi/45:2*pi;%360度,91个点。02pi
  37.  
  38. %%
  39. %定义装位置和数值的空矩阵
  40. circle_x=zeros(length(r),length(theta));
  41. circle_y=zeros(length(r),length(theta));
  42. circle_EDH=zeros(length(r),length(theta));
  43. %%
  44. %N*2D方式,一共生成了91条线,每条线上有10个数据,
  45. for i=1:length(r)
  46. x=X0+r(i)*cos(theta); %(X0,Y0)圆心,得到想要获取的EDH的位置(x,y
  47. y=Y0+r(i)*sin(theta);
  48. for j=1:length(theta)
  49. [min_lon,lon_index]=min(abs(lon-x(j)));%得到最匹配的x轴的值
  50. [min_lat,lat_index]=min(abs(lat-y(j)));%得到最匹配的y轴的值
  51. circle_EDH(i,j)=EDH_south_sea(lat_index,lon_index);%存储蒸发波导高度
  52. end
  53. circle_x(i,:)=x;
  54. circle_y(i,:)=y;
  55. %plot(x,y,'.','markersize',6,'color','r')
  56. end
  57. %%
  58. %画图
  59. colormap('jet');
  60. shading flat;%平滑方式
  61. gca=pcolor(circle_x,circle_y,circle_EDH)
  62. set(gca, 'LineStyle','none');%去除网格
  63. axis equal tight %按比例展示
  64. % colorbar %颜色条
  65.  
  66. c=colorbar('eastoutside','fontsize',12)
    %caxis([0,14])%颜色条范围限制
  67. title( '2008年南海平均蒸发波导高度','fontsize',15);%[a b c d]确定绘图区域的位置, [a b]为绘图区域左下点的坐标。
  68. m_coast('patch',[0.1 0.7 0.4]);%绿色填充
  69. m_grid('box','fancy','tickdir','in'); %cd分别为绘图区域的宽和高。

这样可以看到,靠近岸的地方温度低,靠近海的地方温度高。

7、获取路径损失数据图

  1. %获取圆形区域路径损失数据
  2. clear all;
  3. % load testUsrDef.mat
  4. tic
  5. freq = 8000; % in MHz频率
  6. thetabw = 2; % in deg 3分贝波束宽度
  7. thetae = 0; % in deg 仰角度数
  8. polrz = 1; % 1 for horizontal polarization 水平极化, 2 for vertical polarization 极化方式
  9. tx_height = 3; % tx_antenna height, in m,天线高度
  10. range = 300; % calcu range, in km,水平传播距离
  11. zmax_user = 100; % maximum height (max desired calculation height), in m,电波限高
  12. rx_height=3;%接收天线高度
  13. delx = 100; % range step, in m,距离步进值迭代设置
  14. delz = 0.1; % altitude step, in m,高度步进值
  15. %%
  16. %%地形设置
  17. edge_range = [ 20 30 50 ]; % array of edge range, in km,地形限制
  18. edge_height = [ 5 20 7 ]; % array of edge heights at edge ranges, in m,地形高度;???无效?
  19. terrain_type = 1; % tarrain type, 1 for no terrain case, 2 for terrain case
  20. interp_type = 2; % edge interp type, 2 for linear, 3 for cubic spline
  21. backward = 1; % 1 for 1-way SSPE, 2 for 2-way SSPE
  22.  
  23. %% 海洋表面参数
  24. ground_type = 1; % ground type, 1 for PEC, 2 for mixed
  25. epsilon = 69.13; % dielectric constant 介电常数
  26. sigma = 7.146; % conductivity 电导率
  27. %%
  28. %预留数据空间
  29. load CIRCLE_EDH % 10*91 91次循环,91条线,10个蒸发波导高度
  30. circle_path_loss=zeros(10*range+1,length(circle_EDH));
  31. circle_pl_x=zeros(10*range+1,length(circle_EDH));
  32. circle_pl_y=zeros(10*range+1,length(circle_EDH));
  33.  
  34. %% 波导条件设置
  35. % duct_type = 5; % duct type, 1 for standard atmosphere, 3 for surface-based duct, 5 for evaporation duct
  36. % duct_M = [360 0];%必须带0
  37. % duct_height = [15 0]; %必须带0
  38. % duct_range = 1; %???水平不均匀性的设置
  39.  
  40. % duct_type = 5; % duct type, 1 for standard atmosphere, 3 for surface-based duct, 5 for evaporation duct
  41. % duct_M = [360 0 ;300 0;344 0];
  42. % duct_height = [15 0;18 0; 20 0];
  43. % duct_range =[0 100 200]; %水平不均匀性的设置,0km处蒸发波导高度15m,100km处蒸发波导高度5m,200km处蒸发波导高度20m.
  44. for i=1:length(circle_EDH)
  45. duct_type = 5; % duct type, 1 for standard atmosphere, 3 for surface-based duct, 5 for evaporation duct
  46.  
  47. duct_M=zeros(10,2);
  48.  
  49. duct_height = zeros(10,2);
  50. duct_height(:,1)=circle_EDH(:,i);%获取第i列(线)波导高度
  51. duct_range =linspace(0,300,10); %水平不均匀性的设置,0km处蒸发波导高度15m,100km处蒸发波导高度5m,200km处蒸发波导高度20m.
  52. %计算路径损失
  53. [umat, path_loss, prop_fact, free_space_loss, range_vec, z_user, z, stopflag] = SSPE_function(freq, ...
  54. thetabw, thetae, polrz, tx_height, range, zmax_user, edge_range, edge_height, ...
  55. duct_type, duct_M, duct_height, duct_range, terrain_type, interp_type, backward, ...
  56. ground_type, epsilon, sigma, delx, delz);
  57. circle_path_loss(:,i)=path_loss(rx_height*10,:);
  58.  
  59. end
  60. %计算坐标
  61. for i=1:length(circle_EDH)
  62. circle_pl_x(:,i)=linspace(circle_x(1,i),circle_x(10,i),10*range+1);
  63. circle_pl_y(:,i)=linspace(circle_y(1,i),circle_y(10,i),10*range+1);
  64. end
  65. toc
  66. save CIRCLE_PATH_LOSS circle_path_loss circle_pl_x circle_pl_y

8、圆形路径损失图

  1. %圆形路径损失绘制
  2. clear all
  3. LATLIMS=[14 22];
  4. LONLIMS=[108 118];%南海边界范围
  5. m_proj('lambert','lon',LONLIMS,'lat',LATLIMS);%投影模式
  6. hold on %一定要有,否则地图会被覆盖
  7. %%
  8. load CIRCLE_PATH_LOSS
  9. %%
  10. %画图
  11. colormap('jet');
  12. shading flat;%平滑方式
  13. gca=pcolor(circle_pl_x,circle_pl_y,circle_path_loss);
  14. set(gca, 'LineStyle','none');%去除网格
  15. axis equal tight ;%按比例展示
  16. %colorbar %颜色条
  17.  
  18. c=colorbar('eastoutside','fontsize',12);
  19. caxis([100,220]);%颜色条范围限制
  20. m_coast('patch',[0.1 0.7 0.4]);%绿色填充
  21. m_grid('box','fancy','tickdir','in'); %cd分别为绘图区域的宽和高。

M_map(五)的更多相关文章

  1. 《Django By Example》第五章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者@ucag注:大家好,我是新来的翻译, ...

  2. 旺财速啃H5框架之Bootstrap(五)

    在上一篇<<旺财速啃H5框架之Bootstrap(四)>>做了基本的框架,<<旺财速啃H5框架之Bootstrap(二)>>篇里也大体认识了bootst ...

  3. 移动站应该尝试百度MIP的五个原因

    MIP是什么?MIP是百度在2016年提出的移动网页加速器项目. MIP能做什么?MIP能帮助站长和网站开发者快速搭建移动端页面. MIP怎么加速?MIP从前端渲染和页面网络传输两方面进行优化,杜绝页 ...

  4. 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发

    阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...

  5. MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信

    MVVM模式解析和在WPF中的实现(五) View和ViewModel的通信 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 M ...

  6. 【原】AFNetworking源码阅读(五)

    [原]AFNetworking源码阅读(五) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中提及到了Multipart Request的构建方法- [AFHTTP ...

  7. JavaScript常见的五种数组去重的方式

    ▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...

  8. 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载

    title: 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 tags: -RecyclerView,下拉刷新,上拉加载更多 grammar_cjkRuby: true - ...

  9. CRL快速开发框架系列教程五(使用缓存)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

随机推荐

  1. [React技术内幕] setState的秘密

    对于大多数的React开发者,setState可能是最常用的API之一.React作为View层,通过改变data从而引发UI的更新.React不像Vue这种MVVM库,直接修改data并不能视图的改 ...

  2. python入门到放弃-基本数据类型之tuple元组

    #概述 元组俗称不可变的列表,又称只读列表,是python的基本数据类型之一, 用()小括号表示,里面使用,逗号隔开 元组里面可以放任何的数据类型的数据,查询可以,循环可以,但是就是不能修改 #先来看 ...

  3. 《深入理解 Java 虚拟机》读书笔记:虚拟机类加载机制

    正文 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制. 一.类加载的时机 1.类的生命 ...

  4. 负margin在页面布局中的应用

    关于负margin的原理建议大家看看这篇文章:http://www.cnblogs.com/2050/archive/2012/08/13/2636467.html#2457812 一. 左右列固定, ...

  5. ZXingObjC直接引用第三方工程使用方法

    1.下载ZXingObjc压缩包,解压缩. 2.将文件拷贝到项目工程目录下 3.到工程目录中ZXingObjc文件夹中将ZXing的执行文件拖拽到项目中. 4.点击项目targets ——>Bu ...

  6. vs远程调试iis

    1.在开发电脑上 找到 D:\Software\VS2010\Common7\IDE\Remote Debugger 下面msvsmon.exe所在的两个文件夹x86和x64,使用x86或者x64是根 ...

  7. web实验二 ---通过jQuery实现用户注册身份验证

    通过jQuery实现用户注册身份验证,当每个文本框失去焦点时进行该文本框内容校验,并将校验信息在文本框右侧显示出结果. 具体校验要求: 1.用户名由6-18位字符组成 2.密码由6-18位字符组成,且 ...

  8. 爬虫过程中获取不到列表页的url

    例1: 采集某网站的时候根据网页页面显示的url链接提取的, 最后始终没有数据返回. 主要原因是页面源码中标签的 href 属性值和页面上的不一样. 页面上显示是‘http://www.xxx.org ...

  9. Python数据基本类型3

    -*- coding:utf-8 -*-字典 键值对数据 dict dic = {'键':'值'}存储数据 字典的查找快一些不可哈希的,就是可变的数据 可变的数据不能哈希 不可变的数据能哈希 pyth ...

  10. Spring Boot入门系列(六)如何整合Mybatis实现增删改查

    前面介绍了Spring Boot 中的整合Thymeleaf前端html框架,同时也介绍了Thymeleaf 的用法.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/z ...