【问题标题】:Excel 5 Dimensional arraysExcel 5 维数组
【发布时间】:2018-04-10 16:02:13
【问题描述】:

如何在 Excel 中制作 5D 数组?我必须稍后将其作为 5D 单数组转移到 Matlab。我有大量的脑电图数据需要分类成数组。

【问题讨论】:

  • 你可以用 VBA 制作 5D 数组,但我不认为它可以从 VBA 传递到 Matlab。您很可能必须使用矩形 Excel 范围并在 Matlab 中将其从 2D 转换为 5D。另一种选择可能是在 Excel 中使用 Power Query 而不是 Matlab。

标签: arrays excel matlab multidimensional-array


【解决方案1】:

您是在寻求有关 VBA 的帮助,还是寻求有关如何在 Excel 工作表中编码 5D 数组的帮助?这个答案假设后者。有很多方法可以做到这一点,但这里有两种选择(不一定是好的选择,但希望它们能帮助您创造性地思考问题)。

(1) 如果数组是稀疏的,可以将数据作为元组列表存储在excel表格中,形式为(dim1、dim2、dim3、dim4、dim5、value),前面是数组的维数.例如,您的 Excel 工作表可能包含以下数据:

5   9   9   7   8
1   2   9   6   4   10.1
4   9   3   7   2   18.9
3   2   1   7   8   19.2

相应的 MATLAB 数组将定义如下(假设您希望空值是 NaN):

mat = NaN(5, 9, 9, 7, 8);
mat(1, 2, 9, 6, 4) = 10.1;
mat(4, 9, 3, 7, 2) = 18.9;
mat(3, 2, 1, 7, 8) = 19.2;

(2) 您可以将数组存储为一个简单的值列表,再次以数组的维数开头。可以根据 MA​​TLAB 如何对数组进行矢量化,对该列表进行规范索引。例如,您的 Excel 工作表可能包含以下数据:

5     9     9     7     8
11.3
14.2
25.5
18.9
<etc.>

相应的 MATLAB 数组将定义如下(再次假设您希望空值是 NaN):

mat = NaN(5, 9, 9, 7, 8);
mat(1) = 11.3;
mat(2) = 14.2;
mat(3) = 25.5;
mat(4) = 18.9;
<etc.>

当然,在这两种情况下,您都可以使用 xlsreadreshape 等 MATLAB 函数自动将矩阵从 Excel 加载到 MATLAB。

对于我解释您的问题的方式,Excel 文件也没有什么特别之处;如果你想走这条路,那么 CSV 文件可能是存储数据的更好选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多