do not regress if any Y is zero
    4 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hi, I am using regress to perform linear regression on a large nc file (containing lat, lon, time, and temperature). So for each lat, lon, temperature is regressed over 30 years (one measurement each year).
In some years, some temperatures are 0 K, in those cases I want the loop to not regress, so the final mean slope does not include these.
Here is the important part of my code:
I am not getting an error but also not getting any difference in whether i include  y(y==0) = NaN;, so I think there may be a better way. I had understood that regress ignores these autmatically, but that also appears to not be the case.
% 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
0 comentarios
Respuestas (1)
Ver también
Categorías
				Más información sobre Linear and Nonlinear Regression en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

