Trends are statistically significant or not

3 views (last 30 days)
I have the p-values for each pixel in idanom_trend_per_winter(:,:), and i am checking which areas show statistically significant values in my dataset. So put the NaN's and values less than 0.05(the default value of alpha, i am using R2012b) as NaN, and plot the results
for ii = 1:361,
for jj = 1:361
if ((idanom_trend_per_winter(:,:) > 0.05) | (isnan(idanom_trend_per_winter(:,:))))
sgt(ii,jj) = NaN;
else
sgt(ii,jj) = idanom_trend_per_winter;
end
end
end
_ Error Subscripted assignment dimension mismatch._

Accepted Answer

David Barry
David Barry on 15 Dec 2016
Edited: David Barry on 15 Dec 2016
Presumably instead of:
if ((idanom_trend_per_winter(:,:) > 0.05) | (isnan(idanom_trend_per_winter(:,:))))
sgt(ii,jj) = NaN;
else
sgt(ii,jj) = idanom_trend_per_winter;
end
You meant:
if ((idanom_trend_per_winter(ii,jj) > 0.05) | (isnan(idanom_trend_per_winter(ii,jj))))
sgt(ii,jj) = NaN;
else
sgt(ii,jj) = idanom_trend_per_winter(ii,jj);
end
Anyway, you can do all of this without the need for a loop. I am assuming sgt is meant to be the same size as idanom_trend_per_winter but with the substituted values, so:
sgt = idanom_trend_per_winter;
sgt(idanom_trend_per_winter < 0.05 | isnan(idanom_trend_per_winter)) = NaN;
Oh and also, you said less than 0.05 in your description but your code is checking for greater than.
  1 Comment
Sophia
Sophia on 16 Dec 2016
Sorry my bad.. the result is the values less than 0.05, so all values above 0.05 as NaN
Thanks!

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 15 Dec 2016
This: "idanom_trend_per_winter(:,:) > 0.05" is going to give you a 2-D array, not a single number like you might be expecting. Use all() or any() depending on how you want to handle that case.

Community Treasure Hunt

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

Start Hunting!