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 Commento

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

Accedi per commentare.

 Risposta accettata

% 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 Commenti

Hi, can you suggest a solution for a matrix with several "0" cells, which should be ignored for corr?

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Centro assistenza e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by