How do I use if elseif to find indices of elements that meet a statement and assign NaN to elements that don't?

1 vue (au cours des 30 derniers jours)
Hi All,
I have a 3D matrix (a2).
I want to find the index of elements in a2 <= -0.1 in the first dimension for all trials (trl) and experiments (exp). Some of my trials (trl) don't have values <=-0.1, and for these I would like to assign them with NaN.
I've had a go at writing code, but my if elseif statement is completely off. Can someone please give me some pointers on what I should do.
Many thanks
onsetT=zeros(trl,anim); %preallocate
for exp = 1:12 %experiments
for trl=1:50 %trials
if a2(:,trl,exp)<=-0.1 %if there are elements <=0.1
[row] = find(a2(:,trl,exp)<=-0.1,1); %find index of these elements
onsetT(trl,exp)=lfpTime(row); %use index to locate onset time
elseif a2(:,trl,exp)>=0 %if elements >0 i.e. positive
a2(:,trl,exp)=NaN; %assign them with NaN
onsetT(trl,exp)=a2(:,trl,exp); %assign onset time for these trials NaN
end
end
end

Réponses (1)

KSSV
KSSV le 16 Juin 2021
If a is your matrix, to replace the values which are less than -0.1 just use:
idx = a < -0.1 ;
a(idx) = NaN ;
  1 commentaire
NA
NA le 16 Juin 2021
Thanks for this. The issue I am facing now, is that I get an error message at the point were the for loop comes across a trial where all the values are NaN: "Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-0."
I tried to overcome this by adding the following line of code but was not successful:
if isnan(a2)
onsetT(trl,exp)=NaN;
else
What I'm trying to do is assign NaN in the matrix 'onsetT' (50x12) when all elements in the trial are NaN.
To put things into prespective my code looks like this:
onsetT=zeros(trl,exp);
idx=a2>0;
a2(idx)=NaN;
for exp =1:12
for trl=1:50
if isnan(a2)
onsetT(trl,exp)=NaN;
else
[row] = find(a2(:,trl,exp)<=-0.1,1);
onsetT(trl,exp)=lfpTime(row);
end
end
end
Your help is appreciated. Thanks

Connectez-vous pour commenter.

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by