How can I skip zero values in an array when evaluating the correlation coefficient ?

Hello, I am kind of new to Matlab and I am running into some issues evaluating the correlation coefficient between the natural logarithm of two arrays(chan1 and chan2) each of size 577*1 that includes zero values that I would like to skip when calculating the correlation coefficient. I thought I could do a nested for loop to skip the zero values and this is what I have:
for chan1 ~= 0
for chan2 ~=0
c = corrcoef(log(chan1),log(chan2))
end
end
But it seems like that Matlab does not like it when one uses does not equal to in a for loop
Please help me solving this issue.
Thanks!

1 comentario

Another thing I thought of doing is:
if chan1 == 0
return
elseif chan2 == 0
return
else c = corrcoef(log(chan1),log(chan2))
end
but this is what I get:
c =
NaN NaN
NaN NaN

Iniciar sesión para comentar.

 Respuesta aceptada

% Some pretend data
chan1 = round(randn(1000,1));
chan2 = round(randn(1000,1));
% Identify pairs where both are nonzero
idxBothNonzero = chan1 > 0 & chan2 > 0;
% Evaluate correlation, using only pairs where both are nonzero
c = corrcoef(log(chan1(idxBothNonzero)),log(chan2(idxBothNonzero)))

2 comentarios

It works, Thank you very much!!
Hi, can you suggest a solution for a matrix with several "0" cells, which should be ignored for corr?

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Preguntada:

el 14 de Jul. de 2017

Comentada:

el 15 de Sept. de 2018

Community Treasure Hunt

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

Start Hunting!

Translated by