Интерполировать температурные временные ряды на сетку давления - PullRequest
0 голосов
/ 19 июня 2019

У меня есть временной ряд с соответствующими значениями температуры и давления, и я хочу построить каждое значение температуры при соответствующем значении давления, сохраняя при этом порядок временных рядов.

Я пытался интерполировать значения температуры на сетке давления следующим образом:

%. Допустим,

T = temperature  (23583 x 11);
P = pressure     (23583 x 11);
t = time         (23583 x 11);
PO=min(min)(P):1:max(max)(P); (1x52) %PO=pressure grid

Tinterp = interp1 (P, T, PO);

Дает ошибку: Ошибка при использовании griddedInterpolant. Векторы сетки должны содержать уникальные точки.

Ошибка в interp1 (строка 149) F = griddedInterpolant (X, V, метод);

Я знаю, что должен запустить функцию interp1 в цикле, который циклически перебирает все мои столбцы.

n=23583 
for i=1:n 
    TO(i,:) = interp1(P(i,:),T(i,:),PO) 
end 

Но это заставило matlab запустить цикл продолжения в течение нескольких часов.Может кто-нибудь объяснить, что я делаю не так, пожалуйста.

Я хочу создать закрашенный контурный график с PO на Yaxis и временем на оси x и TO в качестве моего значения Z.

1 Ответ

0 голосов
/ 20 июня 2019

Попробуйте удалить дубликаты с помощью функции unique,

T = randi([0 25],1,23583); % random temperature values
P = randi([800 1000],1,23583); % random pressure values
t = [1:1:23583]; % time
PO=min(P):1:max(P); %PO=pressure grid

[P, index] = unique(P); 
Tinterp=interp1(P,T(index),PO);
...