do not regress if any Y is zero

2 Ansichten (letzte 30 Tage)
aine gormley
aine gormley am 23 Feb. 2019
Bearbeitet: Matt J am 24 Feb. 2019
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

Antworten (1)

Matt J
Matt J am 23 Feb. 2019
How about
c = regress(y(y~=0), x(y~=0));
  7 Kommentare
aine gormley
aine gormley am 24 Feb. 2019
Hi, sorry - I meant if only 1 y is zero (so the other 29 are not zero), do you know if there a way to exclude this regression in such cases?
Matt J
Matt J am 24 Feb. 2019
Bearbeitet: Matt J am 24 Feb. 2019
So, tell me again why can't you set the results to NaN?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Produkte


Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by