do not regress if any Y is zero
2 views (last 30 days)
Show older comments
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 Comments
Answers (1)
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!