Индексирование имен полей Matlab
Итак, у меня есть массив ячеек с несколькими таблицами, и я пытаюсь получить доступ к имени первого столбца таблицы.
c={'table1', 'table2', 'table3'}
Обе следующие строки дают мне ошибку:
fieldnames(c{1})(1)
fieldnames(c{1}){1}
Error: ()-indexing must appear last in an index expression.
Но если я делаю следующее, это работает:
fn=fieldnames(c{1})
fn{1}
Есть ли способ сделать это с помощью одной строки кода, и кто-то может объяснить ошибку?
2 ответа
Решение
Обычно такие проблемы могут быть решены с помощью вызова функции (либо фиктивной функции, которая просто возвращает входные данные), либо вы можете просто заменить fn{} явным вызовом subsref
:
subsref(fieldnames(c{1}),substruct('{}',{1}));
Что касается вашего вопроса о том, почему происходит ошибка - может быть, эта ссылка может помочь.
Я предположил, что следующий код воспроизводит вашу структуру данных:
col1 = [1; 2; 3];
col2 = [4; 5; 6];
t1 = table(col1, col2);
t2 = table(col1, col2);
t3 = table(col1, col2);
c = {t1, t2, t3};
Если это так, то это должно работать:
subsref(fieldnames(c{1}),substruct('{}',{1}))