Пример:Как получить список, разделенный запятой, непосредственно из table.Properties.VariableNames?
>> A = table({}, {}, {}, {}, {}, ...
'VariableNames', {'Foo', 'Bar', 'Baz', 'Frobozz', 'Quux'});
>> vn = A.Properties.VariableNames;
>> isequal(vn, A.Properties.VariableNames)
ans =
1
До сих пор так хорошо, но даже несмотря на vn
и A.Properties.VariableNames
по всей видимости, то же самое, что они ведут себя совсем по-другому, когда один пытается получить «разделенный запятыми список» из них (с помощью {:}
) :
>> {'Frobnitz', vn{:}}
ans =
'Frobnitz' 'Foo' 'Bar' 'Baz' 'Frobozz' 'Quux'
>> {'Frobnitz', A.Properties.VariableNames{:}}
ans =
'Frobnitz' 'Foo'
есть ли способ, чтобы получить «разделенный запятыми список» из A.Properties.VariableNames непосредственно (то есть, без того, чтобы создать промежуточную переменную типа vn
)?
(Кроме того, есть более надежные функции, чем isequal
для проверки равенства клеточных массивов? В приведенном выше примере vn
и A.Properties.VariableNames
явно не равно достаточно!)
Для тех, кто не У меня есть версия MATLAB, которая поддерживает (довольно новые) объекты table
, это одна и та же история, если вместо этого использовать объекты dataset
(из панели инструментов Statistics). В приведенном выше примере будет затем перевести:
clear('A', 'vn');
A = dataset({}, {}, {}, {}, {}, ...
'VarNames', {'Foo', 'Bar', 'Baz', 'Frobozz', 'Quux'});
vn = A.Properties.VarNames;
isequal(vn, A.Properties.VarNames)
{'Frobnitz', vn{:}}
{'Frobnitz', A.Properties.VarNames{:}}
(Обратите внимание на изменение от VariableNames
к VarNames
; выход опущена: это совпадает с выходом, показанной выше):