雷达散点数据,填充到格网并计算格网平均值

雷达数据,分辨率较高,通过一个格网有多个数据点,因此为了更好的成图展示,将其填充到格网,并对格网取平均值

function backscatter_grid = mean_backscatter(minlat,minlong,grid_scale,dim1_global_longitude,dim1_global_latitude,dim2_global_lat,dim2_global_long,integral_longitude, integral_latitude, integral_predicted_backscatter_values)  
    % 输入:  
    %   integral_longitude: (N, M) 数组,包含经度      %   integral_latitude: (N, M) 数组,包含纬度      %   integral_predicted_backscatter_values: (N, M) 数组,包含后向散射系数  
    % 输出:      %   backscatter_grid: (G, H) 数组,全球格网数据,每个格子包含后向散射系数值      %   scale:格网间隔,及图像分辨率

    % 确保输入为双精度   %某一个函数好像要求数据为double
    integral_longitude = double(integral_longitude);  
    integral_latitude = double(integral_latitude);  
    integral_predicted_backscatter_values = double(integral_predicted_backscatter_values);  
        
    % 初始化三维数组
    num_layers = 50; % 总层数 这里选择50是因为,在我的大致计算过在一个网格内最多有36个数据,如果网格尺度grid_scale为0.1度的话,50就太大了,没必要
    data_3D = NaN(length(dim1_global_latitude), length(dim1_global_longitude), num_layers); % 初始化为 NaN
    mean_data = NaN(length(dim1_global_latitude), length(dim1_global_longitude));    
    
    %将合成数据,按照经纬度填充到对应格网中,然后取平均值
    for i=1:length(integral_latitude)
        radar_point_lat=integral_latitude(i); %-81.83
        radar_point_lon=integral_longitude(i); %51.14

        grid_point_lat = radar_point_lat - (minlat);  %全部改为正数 便于计算
        grid_point_lon = radar_point_lon - (minlong);
        index_lat = fix(grid_point_lat/grid_scale); 
        index_lon = fix(grid_point_lon/grid_scale);
        if index_lon == 0 || index_lat == 0
            continue;
        end        
        %存储到第三维度中
        for j= 1:num_layers
            %如果第三维度是NaN,则存入,如果不是则j+1
            if j==num_layers
                disp('达到最大限制: %d',num_layers);
            end
            if isnan(data_3D(index_lat,index_lon,j))
                data_3D(index_lat,index_lon,j) = integral_predicted_backscatter_values(i);%index_lat,index_lon, 1657  1800 
                break;
            else
                j = j + 1;
            end   
        end
    end

    
    %已经存储好所有数据了,现在对每个网格取平均值
    for ii = 1:length(dim1_global_latitude)
        for jj = 1:length(dim1_global_longitude)
            sum = 0;
            valid_count = 0;
            for qq = 1:num_layers
                if ~isnan(data_3D(ii, jj, qq))
                    sum = data_3D(ii, jj, qq) + sum;
                    valid_count = valid_count + 1;
                end
            end

            mean_point = sum/valid_count;
            mean_data(ii,jj) = mean_point;
        end
    end

    backscatter_grid = mean_data;
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值