Я использую регрессию для выполнения линейной регрессии для большого файла nc (содержащего широту, долготу, время и температуру).Таким образом, для каждого широты и долготы температура регрессирует в течение 30 лет (одно измерение в год).
В некоторые годы некоторые температуры равны 0 К, в этих случаях я хочу, чтобы контур не регрессировал, поэтому окончательнаясредний уклон не включает их.
Ниже приведена важная часть моего кода.
Я не получаю сообщение об ошибке, но также не получаю никакой разницы в том, включаю ли я y (y == 0) = NaN ;, так что я думаю, что может быть лучше.Я понял, что регресс игнорирует их автоматически, но, похоже, это также не так.
% initialise time parameters
time_begin = [1981, 1, 1, 0,0,0];
time_end = [2010,12,31,23,0,0];
years = (time_begin(1):time_end(1))';
nyears = length(years);
% create storage and regress
TXx = randi(100, 288, 192, 30);
lat = rand(192, 1);
lon = rand(288, 1);
time = rand(30,1);
M = numel(lon);
N = numel(lat);
slope = zeros(M, N);
intercept = zeros(M, N);
T = numel(time);
x = ([ones(T, 1) years]);
% Regress each lat/lon location
for i = 1 : M
for j = 1 : N
% Get all time instances of each lat/lon location
y = squeeze(TXx(i, j, :));
y(y==0) = NaN;
% Create regression problem and solve
c = regress(y, x);
intercept(i, j) = c(1);
slope(i, j) = c(2);
end
end