首页 > 解决方案 > 通过MATLAB中的循环将列向量串联在一起

问题描述

我想通过 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 循环,我该怎么做?有谁能够帮我?谢谢

标签: matlabconcatenation

解决方案


连接很简单[c1 ; c2 ; c3]

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

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

假设你有一个未定义数量的变量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现在,如果您想以其他方式格式化数据,您可以遍历每个字段。


推荐阅读