MATLAB | 设置滑动窗口计算栅格数据的CV变异系数

职场   2025-01-12 11:13   陕西  
一、变异系数
变异系数(CV)是衡量数据稳定性的重要指标,表示数据的波动程度,计算方式是标准差与均值的比值。在栅格数据分析中,较低的变异系数意味着数据变化较小、稳定性较高,而较高的变异系数则表明数据波动较大、稳定性较低。
二、MATLAB代码
本次我们采用滑动窗口方法来计算每个时间段内栅格数据的变异系数。通过这种方法,我们可以识别出在不同时间段内变化较大或稳定的区域。同时,此代码还能提取每个滑动窗口栅格数据变异性的最小值、最大值和平均值。
[reference_image, R] = geotiffread('E:\1981_2021_E\ET\ET\Annual\year_ET_1982.tif');info = geotiffinfo('E:\1981_2021_E\ET\ET\Annual\year_ET_1982.tif');[m, n] = size(reference_image);
start_year = 2000;end_year = 2020;window_size = 5;years = end_year - start_year + 1;num_windows = years - window_size + 1;
data = zeros(m * n, years);
csv_path = 'E:\1981_2021_E\ET\ET\Results\Stability_Window_Stats.csv';csv_file = fopen(csv_path, 'w');fprintf(csv_file, 'Window_Start,Window_End,Min_Stability,Max_Stability,Mean_Stability\n');
for k = 1:years year = start_year + k - 1; file_path = sprintf('E:\\1981_2021_E\\ET\\ET\\Annual\\year_ET_%d.tif', year); if exist(file_path, 'file') temp_data = geotiffread(file_path); data(:, k) = reshape(temp_data, m * n, 1); else data(:, k) = NaN; endend
for window_index = 1:num_windows window_start = start_year + window_index - 1; window_end = window_start + window_size - 1; window_data = data(:, window_index:(window_index + window_size - 1)); stability = NaN(m, n); for i = 1:size(window_data, 1) pixel_data = window_data(i, :)'; if all(~isnan(pixel_data)) && min(pixel_data) >= 0 A = mean(pixel_data); S = std(pixel_data, 1); V = S / A; stability(i) = V; else stability(i) = NaN; end end stability = reshape(stability, m, n); output_file = sprintf('E:\\1981_2021_E\\ET\\ET\\Results\\WUE_CV_Window_%d-%d.tif', window_start, window_end); geotiffwrite(output_file, stability, R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag); valid_stability = stability(~isnan(stability)); if ~isempty(valid_stability) min_stability = min(valid_stability); max_stability = max(valid_stability); mean_stability = mean(valid_stability); else min_stability = NaN; max_stability = NaN; mean_stability = NaN; end fprintf(csv_file, '%d,%d,%f,%f,%f\n', window_start, window_end, min_stability, max_stability, mean_stability);end
fclose(csv_file);
三、成为会员

GIS遥感数据处理应用
会员:数据处理,ArcGIS/Python/MATLAB/R/GEE教学,指导作图和论文。
 最新文章