在Google电子表格中获取2D Matrix的单元格

时间:2015-05-26 17:03:06

标签: javascript matrix google-apps-script

我将此功能用作电子表格中使用的Google Apps脚本中的自定义功能:

function MultiplyMatrix(m2, m1) {
    var result = [];
    for(var j = 0; j < m2.length; j++) {
        result[j] = [];
        for(var k = 0; k < m1[0].length; k++) {
            var sum = 0;
            for(var i = 0; i < m1.length; i++) {
                sum += m1[i][k] * m2[j][i];
            }
            result[j].push(sum);
        }
    }
    return result;
}

有没有办法获得数组的特定索引而不将整个结果矩阵输入到电子表格中,如果是这样,语法是什么?

我有这个:

enter image description here

我想要这样:

enter image description here

1 个答案:

答案 0 :(得分:0)

由于我无法发表评论,我将使用答案。鉴于您的问题是如何制定的,一个简单的答案可以是更改您的自定义函数定义,以便它需要两个额外的参数,即您感兴趣的结果的行索引和列索引;因此你的代码变成了:

function MultiplyMatrix(m2, m1, row, col) {
    var result = [];
    for(var j = 0; j < m2.length; j++) {
        result[j] = [];
        for(var k = 0; k < m1[0].length; k++) {
            var sum = 0;
            for(var i = 0; i < m1.length; i++) {
                sum += m1[i][k] * m2[j][i];
            }
            result[j].push(sum);
        }
    }
    return result[row][col];
}

然后,您可以将函数调用为=MultiplyMatrix(A1:B2, C3:D4, 1, 1),以获取第二行和第二列的交集值。

如果这不是您期望的答案,我建议您编辑您的问题,将其标记为google-spreadsheet(javascript自定义函数特定于此),并澄清要求。电子表格示例对我们所有人都有帮助。