Exclude one row from calculation
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello, i am new in MATLAB. I am searching for a way to calculate with every but one row (in this example it is the second row).
This is my code, which doesn`t work:
Reference=2;
ABC=[1;2;3;4;5;6];
logodds(1:5,:)=log(ABC(:~=Reference,1)./ABC(Reference,1));
What i could do would be:
logodds(1:5,:)=log(ABC([1 3 4 5 6],1)./ABC(Reference,1));
But the first part of the calculation ABC([1 3 4 5 6],1) musst be dependent on "Reference" because the value of Reference can change between 1 and 6. It should be a solution, where i don´t have to enumerate every row seperately. I want to express something like: Use for calculation every row (:) except the Reference-row (~=Reference).
I will greatly appreciate any assistance.
0 Commenti
Risposta accettata
Rik
il 22 Feb 2019
The easiest way to do this is with a logical vector:
Reference=2;
ABC=[1;2;3;4;5;6];
L=ABC~=Reference;
logodds(1:5,:)=log(ABC(L,1)./ABC(Reference,1));
However, this might fail for decimal values that have float rounding errors. In that case you may want to use ismembertol to generate the vector, or use
L= abs(ABC-Reference) < 2*eps;
3 Commenti
Rik
il 22 Feb 2019
You can use the all or any functions to convert L back to a vector to suit your needs. This method does not rely on the 2 being in the second row, so that does not matter.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Numeric Types in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!