一、圆形区域的画图

1、

clear all

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

2、距离

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

3、

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

  

4、pcolor

clear all
n =18;
r = (0:n)'/n;
theta = pi*(-n:n)/n;
X = r*cos(theta);
Y = r*sin(theta);
C = r*cos(2*theta);
pcolor(X,Y,C)
axis equal tight
colorbar figure
load PCOLOR %南海坐标和波导高度数据
colormap('jet');
shading flat;%平滑方式
gca=pcolor(Plg,Plt,EDH_south_sea)
set(gca, 'LineStyle','none');%去除网格
axis equal tight %按比例展示
colorbar %颜色条

clear all

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

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

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

5、

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

角度逆时针转

半径分成了6份。

6、

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

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

7、获取路径损失数据图

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

8、圆形路径损失图

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

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. 由一个项目需求引发的 - textarea中的换行和空格

    当我们使用 textarea 在前台编辑文字,并用 js 提交到后台的时候,空格和换行是我们最需要考虑的问题.在textarea 里面,空格和换行会被保存为/s和/n,如果我们前台输入和前台显示的文字 ...

  2. Python学习笔记--迭代

    在Python中,迭代是通过for ... in来实现.只要是可迭代的对象都可以用for ... in来进行历遍. 常用的有list.tuple.dict等.举例如下: 列表的迭代: L=[1,2,3 ...

  3. safari坑之 video

    博客地址: https://www.seyana.life/post/19 本来是打算给博客左上角的gif做个优化, 把gif换成webm,以video的形式自动播放,能从180k降到50k, 现在浏 ...

  4. 实验一 Linux系统与应用准备

    实验一 Linux系统与应用准备 项目 内容 作业归属 班级课程 作业要求 课程作业要求 学号-姓名 17041419-刘金林 作业学习目标 1.学习博客园软件开发者学习社区使用技巧和经验:2.学习M ...

  5. VOIP RTP RTSP 实现 Baresip 源码分析

    RTP 使用 udp 进行数据传输,udp 是不能保证,数据包一定可以到达的,也不提供时序.同时还有 MTU 限制. RTCP 用来配合 RTP 提供,传输报告,会话建立和退出. 一大批参考规范 * ...

  6. 01-if条件语句之数字比较

    if条件语句之数字比较 #!/bin/bash # 使用expr命令,比较结果正确,输入1,错误输入0 expr_mode(){ if [ $(expr $1 \<\= $2) -eq 1 ]; ...

  7. JavaMail(一):利用JavaMail发送简单邮件

    JavaMail,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.但它并没有包含在JDK中,要使用JavaMail首先要下载ja ...

  8. 浅析Redis分布式锁---从自己实现到Redisson的实现

    当我们在单机情况下,遇到并发问题,可以使用juc包下的lock锁,或者synchronized关键字来加锁.但是这俩都是JVM级别的锁,如果跨了JVM这两个锁就不能控制并发问题了,也就是说在分布式集群 ...

  9. 使用C#+EmguCV处理图像入门(图像读取_显示_保存)二

    上个随笔已经介绍EmguCV的一些常用库和程序安装以及环境变量的配置,这次写的是如何使用这个类库对图像进行操作. EmguCV图像处理系统组成(个人见解): 图像的基本操作: 贴个代码: using ...

  10. Linux常用命令总结(一)

    一.cd命令 用于切换当前目录,类似与win的命令.它可以切换到绝对路径,也可以是相对路径. cd  /root/Doce  # 切换到绝对路径/root/Doce目录下 cd ./path  # 切 ...