strcmp适用于由{}但不是[]创建的表

时间:2016-09-28 02:06:50

标签: matlab

此问题与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'.

1 个答案:

答案 0 :(得分:1)

首先,尽量避免使用2d字符数组。无论何时,只要使用单元数组就可以摆脱多维字符数组的许多限制。限制如:

T1

现在我回到你的问题:你可以先将表格strcmp转换为单元格数组,然后使用strcmp(table2cell(T1), 'MM') ans = 1 0 1

n-Math.floor(n)