comparing table values using isequal

112 次查看(过去 30 天)
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

采纳的回答

Cris LaPierre
Cris LaPierre 2020-9-15
编辑:Cris LaPierre 2020-9-15
This can be done much simpler. Try something like this.
A = M(M{:,2}=="f",:);
  2 个评论
Jakub Steiner
Jakub Steiner 2020-9-15
Nice! Works as well and without my clumsy cycles.
Thanks a lot!
Cris LaPierre
Cris LaPierre 2020-9-15
This can be made even simpler by using the variable name:
A = M(M.Var2=="f",:);

请先登录,再进行评论。

更多回答(2 个)

Fangjun Jiang
Fangjun Jiang 2020-9-15
编辑:Fangjun Jiang 2020-9-15
try TF = isequal (M.Var2{i},'f')

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

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

产品


版本

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by