MATLAB: инициализировать и пустую таблицу с заголовками и объединить ее с другой таблицей

Я получаю такую ​​ошибку:

Cannot concatenate the table variable 'epoch' because it is a cell in one table and a non-cell in another.

Чтобы воспроизвести ошибку:

A.epoch = [1,2,3]';
A.value = [10,20,30]';

Инициализированная пустая таблица с заголовками:

Aclean = cell2table(cell(1,2), 'VariableNames', {'epoch', 'value'});

Вертикально соедините 2 таблицы:

Aclean = vertcat(Aclean, struct2table(A));

Каков наилучший способ объединения таблиц с циклом for в Matlab?

Не могли бы вы объяснить, где именно вы хотите задействовать цикл for? Чтобы добавить больше столбцов (переменных) или строк

Raha 27.09.2018 17:07
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
1
896
1

Ответы 1

Если я правильно понимаю, вы хотите инициализировать Aclean перед циклом, а затем присоединять к нему данные на каждой итерации цикла. Если это так, вы можете просто инициализировать Aclean пустым массивом:

Aclean = [];

A.epoch = [1,2,3].';
A.value = [10,20,30].';
Aclean = vertcat(Aclean, struct2table(A));

Однако, если вы заранее знаете, сколько строк вы добавите в таблицу, лучше заранее выделить всю таблицу:

% N = number of rows
A = array2table(zeros(N,2), 'VariableNames', {'epoch', 'value'});
A.epoch(1:3) = [1,2,3];
A.value(1:3) = [10,20,30];

Дешевле обрезать неиспользуемые строки снизу, чем добавлять на каждой итерации.

Еще одна альтернатива - работать с struct и преобразовать его в table после цикла. Структура - это встроенный тип, тогда как таблица реализована как настраиваемый класс. Таким образом, структуру будет более эффективно обновлять.

Другие вопросы по теме