【问题标题】:Matlab: How to multiply 3-dimensional array with Vector? [duplicate]Matlab:如何将 3 维数组与 Vector 相乘? [复制]
【发布时间】:2015-06-10 20:09:47
【问题描述】:

假设我有一个维度为 M = (3, 12, 9) 的数组 M 和一个包含 9 个元素的向量 C。

如何有效地将 M 与 C 相乘,以便

M(:,:,1) * C(1)
M(:,:,2) * C(2)

等等?

非常感谢您的帮助。提前致谢

【问题讨论】:

标签: matlab matrix vector multiplication


【解决方案1】:

代码:

bsxfun(@times,A,permute(C(:),[3 2 1]));

最初由Divakar 回答,取自here

【讨论】:

  • 我想用 C 中的相应值缩放每个单独的 3,12 子矩阵。@Santhan,我不明白这应该如何帮助......你能详细说明吗?
  • 已编辑。请参阅提到的链接。
  • 最好提及向量 C 是行向量的假设,或者在不说明任何假设的情况下执行 bsxfun(@times,A,permute(C(:).',[3 1 2]));bsxfun(@times,A,permute(C(:),[3 2 1]));
  • 非常感谢,但这里有一个后续问题:假设我有一个矩阵 M = (3, 12, 4) 并且我想将它转换为 M = (12,12) 基本上只是将各个 (3,12) 子矩阵相互连接起来。我怎么做?提前致谢
  • @CarstenD 最后那个other answer 也处理了那个“在彼此下连接”的操作。
猜你喜欢
  • 2016-01-22
  • 2014-02-28
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多