Этот вопрос связан с 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'.
Если 2d массивы char ограничены, почему MATLAB все еще допускает это? Является ли он более эффективным, чем клеточные массивы символов? –
Это позволяет, потому что строка является матрицей символов 2d (1xN): 'str = ['a', 'p', 'p', 'l', 'e']'. – DVarga
@JoeC Да, обычные массивы (матрицы или многомерные), как правило, более эффективны, чем массивы ячеек. Но вы не можете создавать так называемые «зубчатые» массивы. Ячеистые массивы более гибкие –