通过MATLAB中的循环将列向量彼此串联在一起

时间:2019-02-13 15:22:30

标签: matlab concatenation

我想通过MATLAB在Excel工作表中将彼此之间的列向量连接在一起。我有以下代码:

  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中使用for循环该怎么做?有谁能够帮助我?谢谢

1 个答案:

答案 0 :(得分:0)

串联起来很容易,[c1 ; c2 ; c3]

正如其他人所提到的,使用单元数组将是一个好主意。然后使用vertcat完成作业。

我的解决方案是使用struct来更好地管理您的数据。

假设您有不确定数量的变量g1,g2,g3...g99 因此,转换后,您得到c1 = g1'(或简单地为c1 = g1(:)),并且这样的... 此处的最佳做法是使用struct数据类型

首先,我将定义一个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中的每个字段。