利用Matlab 绘制卫星天空图 带蒙版效果

利用Matlab polarhistogram-进行极坐标系下闭合曲线的填充,应用于卫星观测天空图边界

在网上找了好久的填充polar图边界无果后,自己琢磨了2h弄出来的,分享给有需要的人,创作不易,如果对您有用,请点赞支持一波。

  1. 添加背景蒙版
  2. 确定绘图区域
  3. 调整坐标系坐标轴
    原理:统计各个方位角的高度角值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
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值