Конкатенация векторов столбцов ниже друг друга через цикл в MATLAB - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу объединить векторы столбцов друг под другом в листе Excel через MATLAB.У меня есть следующий код:

  g1 = cell2mat(rmse_h1);
  c1 = g1';
  g2 = cell2mat(rmse_h2);
  c2 = g2';
  g3 = cell2mat(rmse_h3);
  c3 = g3';

Здесь rmse_h1, rmse_h2 и rmse_h3 - это 3 разных вектора строки с 16 значениями в каждом.Я преобразовываю этот вектор строки в вектор столбца, беря транспонирование, например, c1, c2, c3.

Теперь мой вопрос - я хочу объединить c1, c2 и c3 ниже друг друга в одном столбце таблицы Excel, напримеркак: c2 подпадает под c1, а c3 подпадает под c2

Я хочу сделать это для в общей сложности 10 различных векторов строк.Я хочу использовать для цикла в MATLAB, как я могу это сделать ??Кто-нибудь может мне помочь?Спасибо

1 Ответ

0 голосов
/ 14 февраля 2019

Конкатенация проста как [c1 ; c2 ; c3]

Как уже упоминали другие люди, использование массива ячеек будет отличной идеей.Затем используйте vertcat для завершения работы.

Мое решение использует struct для лучшего управления вашими данными.

Допустим, у вас есть неопределенное количество переменных g1,g2,g3...g99 Итак, послепреобразование, вы получаете c1 = g1' (или просто c1 = g1(:)), и тому подобное ... Лучшая практика здесь - использовать struct тип данных

Сначала я бы определил переменную структуры для хранения вашегоимпортированные данные Excel

C = [];
n = 100; % Number of sheets. Let's assume you know this.
for idx = 1:n
    fileds = sprintf('rmse_h%d',idx);
    d.(field) = readtable(filename, FileType','spreadsheet' ,'Sheet','1);  
    C = [C ; table2array(d.(field))];
end

Теперь вы можете циклически проходить через каждое поле в d, если хотите отформатировать данные другими способами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...