我想通过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循环该怎么做?有谁能够帮助我?谢谢
答案 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
中的每个字段。