matlab - 通过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 循环,我该怎么做?有谁能够帮我?谢谢
解决方案
连接很简单[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
现在,如果您想以其他方式格式化数据,您可以遍历每个字段。
推荐阅读
- arrays - 即使迭代器远离数组的最小和最大边界,也会发生索引超出范围错误
- netlogo - 是否可以提供有关在 netlogo 中导入图像的任何建议?
- php - Laravel将图像上传到Windows上的存储
- javascript - map() 没有保存新元素
- javascript - 我应该如何在 redux 中处理到相同状态的不同转换?例如,我希望对状态更改进行动画处理,但只是有时
- java - 为什么使用 ThreadPoolExecutor 的子线程不能暴露给父线程的任何继承上下文?
- docker - RHEL/CentOS 8 上的 Docker-ce - Docker 容器没有出站网络访问
- python - Tweepy 找不到英国
- c++ - 如何递归复制文件夹和文件而不损失文件修改时间?
- json - 如何使用 $resource 查找 AngularJS 中所有现有 JSON 元素的最高 id