利用Matlab polarhistogram-进行极坐标系下闭合曲线的填充,应用于卫星观测天空图边界
在网上找了好久的填充polar图边界无果后,自己琢磨了2h弄出来的,分享给有需要的人,创作不易,如果对您有用,请点赞支持一波。
- 添加背景蒙版
- 确定绘图区域
- 调整坐标系坐标轴
原理:统计各个方位角的高度角值Ele,相应的使得该方位角区间Azi的中心值出现得次数为90-Ele,写入theta数组中;
效果图如下:
代码如下:
function drawBoundary
fileNames = ["Data\0311\1.JvLei","Data\0311\2.JvLei","Data\0311\3.JvLei","Data\0311\4.JvLei","Data\0311\5.JvLei"];
titles = ["场景1";"场景2";"场景3";"场景4";"场景5"];
% figure;
for j = 1:length(fileNames)
clear data;
clear theta;
clear theta;
data = load(fileNames(j));
data(:,1) = data(:,1);
back = [];
back = [back,[30,60,90,120,150,180,210,240,270,300,330,360]];
count = 1;
maxEle = 90;
%%旋转坐标轴
for i = 1:length(data)
azi = data(i,1);
ele = data(i,2);
if azi>90
azi = 450-azi;
else
azi = 90-azi;
end
for k = ele:maxEle
theta(count) = azi;
count= count+1;
end
end
%% 确定绘图区域
if j<=3
row =1;
withTake = [(j-1)*2+1:j*2];
else
row = 2;
withTake = [j*2:j*2+1];
end
subplot(2,6,withTake );
k = mode(theta);
for i=1:89
back = [back,[30,60,90,120,150,180,210,240,270,300,330,360]];
end
subplot(2,6,withTake);
polarhistogram(deg2rad(back),12,'Normalization','count','FaceColor','black','EdgeColor','none','FaceAlpha',.6,'BinLimits',[0 2*pi]);
hold on;
polarhistogram(deg2rad(theta),12,'Normalization','count','FaceColor','green','EdgeColor','none','FaceAlpha',1,'BinLimits',[0 2*pi]);
%% 调整坐标系坐标轴
rlim([0,90])
rticks(0:maxEle/3:maxEle)
rticklabels({'90°','60°','30°','0°'})
thetaticks(0:30:360)
thetaticklabels({'90°','60°','30°','0°','330°','300°','270°','240°','210°','180°','150°','120°'})
title(titles(j));
end
end