【发布时间】:2015-02-06 16:58:52
【问题描述】:
提前感谢您的帮助。
假设我有一个多 D 数组 x 这样
x(:,:,1) = [1 2; 3 4];
x(:,:,2) = [5 6; 7 8];
和一个矩阵 y 使得
y = [1 2; 5 6];
我想将 y 的第一行添加到 x(:,:,1) 的每一行,将 y 的第二行添加到 x(:,:,2) 的每个元素。这将产生一个数组 z 使得
z(:,:,1) = [2 4; 4 6];
z(:,:,2) = [10 12; 12 14];
实际上(不是我给出的示例)我想在一个非常大的多 D 数组 x 和一个非常大的矩阵 y 上执行此操作。因此,我希望尽可能高效地做到这一点。
天真的方法是使用 for 循环来执行此操作,但这不会是高效的。我相信一种有效的方法是结合 bsxfun 来实现这一点,但我还没有找到一种方法。只要生成相同的 z,y 和 x 就可以重新构造以完成此任务,最重要的是,构建 z 所需的时间少于 for 循环方法。
我能够找到this,它可以满足我的需求,但仅用于乘法而不是求和。我可以修改这段代码来做我想做的事,但我总觉得必须有一个更简单的方法。
【问题讨论】:
标签: arrays performance matlab matrix bsxfun