首页 > 解决方案 > 如何从两个表中制作单元格数组?

问题描述

如何从两个单独的表中生成元胞数组?

我有一个来自 Excel 的数据集,其中包含如下所示的数字

A1 A3 A5 A7 A9
A2 A4 A6 A8 A0

B1 B3 B5 B7 B9
B2 B4 B6 B8 B0

其中 A7 或 B0 只是数字的替代品。

我可以将它们作为表作为单独的“表”变量导入,但最后我想创建一个像这样的单元格数组:

[A1,B1] [A3,B3] [A5,B5] [A7,B7] [A9,B9]
[A2,B2] [A4,B4] [A6,B6] [A8,B8] [A0,B0]

我将如何最好地做到这一点?谢谢!

标签: matlab

解决方案


您可以将表格转换为数组,然后使用以下命令将它们压缩在一起arrayfun

% Here's your example tables:
a = reshape(1:10, [2 5]);
b = reshape(11:20, [2 5]);
ta = array2table(a);
tb = array2table(b);

% Convert them to arrays:
a1 = table2array(ta);
b1 = table2array(tb);

% Zip them together with arrayfun:
c = arrayfun(@(x,y) {[x,y]}, a1, b1)

或者更简洁地说,跳过 table2array 步骤:

c = arrayfun(@(x,y) {[x,y]}, ta.Variables, tb.Variables);

结果:

>> c = arrayfun(@(x,y) {[x,y]}, a1, b1)
c =
  2×5 cell array
    {1×2 double}    {1×2 double}    {1×2 double}    {1×2 double}    {1×2 double}
    {1×2 double}    {1×2 double}    {1×2 double}    {1×2 double}    {1×2 double}

推荐阅读