comparing table values using isequal

110 vues (au cours des 30 derniers jours)
Jakub Steiner
Jakub Steiner le 15 Sep 2020
Commenté : Cris LaPierre le 15 Sep 2020
Hi,
I have a table M. The second column contains either the letter 's' or letter 'f'.
I would like to put all the rows with the letter 'f' in the second column into a new table A with the following code
pocet_radku = height(M);
j=1;
for i=1:pocet_radku
TF = isequal ("M(i,2)",'f')
if TF == 1
A(j,:)= M(i,:);
j = j+1;
else
end
end
Unfortunatelly, the isequal function return only zeros. Any idea why? In there syntax error that I'm not aware of?
Testing in a command window:
>> isequal ("M(180,2)",'f')
ans =
logical
0
>> M(180,2)
ans =
table
Var2
_____
{'f'}
Thanks a lot for any answers

Réponse acceptée

Cris LaPierre
Cris LaPierre le 15 Sep 2020
Modifié(e) : Cris LaPierre le 15 Sep 2020
This can be done much simpler. Try something like this.
A = M(M{:,2}=="f",:);
  2 commentaires
Jakub Steiner
Jakub Steiner le 15 Sep 2020
Nice! Works as well and without my clumsy cycles.
Thanks a lot!
Cris LaPierre
Cris LaPierre le 15 Sep 2020
This can be made even simpler by using the variable name:
A = M(M.Var2=="f",:);

Connectez-vous pour commenter.

Plus de réponses (2)

Fangjun Jiang
Fangjun Jiang le 15 Sep 2020
Modifié(e) : Fangjun Jiang le 15 Sep 2020
try TF = isequal (M.Var2{i},'f')
  1 commentaire
Jakub Steiner
Jakub Steiner le 15 Sep 2020
Works! Thank you a lot

Connectez-vous pour commenter.


BOB MATHEW SYJI
BOB MATHEW SYJI le 15 Sep 2020
Instead of
TF = isequal ("M(i,2)",'f')
try,
TF = strcmp (M.2nd_variable,'f')

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by