Effacer les filtres
Effacer les filtres

Interpolate Nan values in timetable

8 vues (au cours des 30 derniers jours)
youma
youma le 30 Avr 2023
Réponse apportée : Matt J le 30 Avr 2023
Data from the meteo with every day from 01/01/2022 to 31/12/2022 within 10mn of interval. What I'm trying to is to interpolate my missing values from meteo_full_data but based on the mean of previous {20,40,60 } days before and after the missing period. But I can't figure out how, this is what I got so far :
% start and end dates for the missing 20 days
start_date = datetime(2022, 6, 19, 21, 50, 0);
end_date = datetime(2022, 7, 8, 15, 50, 0);
% Calculate the means for the before and after periods
mean_before_60 = mean(data_before_60{:,:}, 'omitnan');
mean_before_40 = mean(data_before_40{:,:}, 'omitnan');
mean_before_20 = mean(data_before_20{:,:}, 'omitnan');
mean_after_20 = mean(data_after_20{:,:}, 'omitnan');
mean_after_40 = mean(data_after_40{:,:}, 'omitnan');
mean_after_60 = mean(data_after_60{:,:}, 'omitnan');
cols_to_interp = {'AR_Hum_', 'AR_Temp_C', 'GlobalRadiation5DegressKWh', 'GlobalRadiation45DegressKWh'};
mean_before = [mean_before_60; mean_before_40; mean_before_20];
mean_after = [mean_after_20; mean_after_40; mean_after_60];
mean_table= [mean_before;mean_after];
%mean_table = mean(mean_table, 'all')
data_to_interp = meteo_full_data(meteo_full_data.TimeStamp >= start_date & meteo_full_data.TimeStamp <= end_date, cols_to_interp)
And I tried these two methods, no good :
inter_data = fillmissing(data_to_interp, 'constant', mean_table, 'DataVariables', cols_to_interp);
%inter_data = fillmissing(data_to_interp,"linear","DataVariables",cols_to_interp)
and this one
%missing_rows = any(ismissing(meteo_full_data(:, cols_to_interp)), 2);
% Replace the missing values with the mean values
meteo_full_data(missing_rows, cols_to_interp) = num2cell(repmat(mean_table, sum(missing_rows), length(cols_to_interp)))

Réponses (1)

Matt J
Matt J le 30 Avr 2023
You could use movmean, like in this example,

Catégories

En savoir plus sur Interpolating Gridded Data dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by