此问题与Does Index Using a Logical Expression work for strings?
有关我在[]和{}创建表时发现了。它表现不同。似乎strcmp仅适用于由{}创建的表。如何为[]创建的表做同样的事情?
>> T1 = table(['MM';'FF';'MM'])
T1 =
Var1
____
MM
FF
MM
>> T2 = table({'MM';'FF';'MM'})
T2 =
Var1
____
'MM'
'FF'
'MM'
>> strcmp(T1.Var1, 'MM')
ans =
0
由于T1.Var1是一个单元格数组,我认为上面的命令应该返回一个值数组,如下所示。
>> strcmp(T2.Var1, 'MM')
ans =
1
0
1
>> size(T1.Var1)
ans =
3 2
>> size(T2.Var1)
ans =
3 1
>> T1.Var1 == 'MM'
Error using ==
Matrix dimensions must agree.
>> T2.Var1 == 'MM'
Undefined operator '==' for input arguments of type 'cell'.
答案 0 :(得分:1)
首先,尽量避免使用2d字符数组。无论何时,只要使用单元数组就可以摆脱多维字符数组的许多限制。限制如:
T1
现在我回到你的问题:你可以先将表格strcmp
转换为单元格数组,然后使用strcmp(table2cell(T1), 'MM')
ans =
1
0
1
。
n-Math.floor(n)