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

3 visualizaciones (últimos 30 días)
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

Respuestas (1)

KSSV
KSSV el 16 de Jun. de 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 comentario
NA
NA el 16 de Jun. de 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

Iniciar sesión para comentar.

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by