Matlab 向量乘以元胞数组

标签 matlab matrix

我有一个向量 x = [1 2 3] 和一个由 N x N 矩阵组成的 3 x 3 元胞数组 C。例如。 C{1,1} 是一个 N × N 矩阵。

我想将 xC 相乘,得到大小为 1 乘以 3 的元胞数组 D:

D{1,1} = x(1)C{1,1) + x(2)C{2,1} + x(3)C{3,1} 
D{1,2} = x(1)C{1,2) + x(2)C{2,2} + x(3)C{3,2} 
D{1,3} = x(1)C{1,3) + x(2)C{2,3} + x(3)C{3,3}

最佳答案

没有展开的循环

对于长度为 M=3 的向量 x 和一个 M-by-M 元胞数组 C,这个想法是形成一个M*N-by-M矩阵,其中列i由单元格C{i, :。然后,您可以使用 x.' 的矩阵乘法来获取 D 中的值,并使用 mat2cell 将结果分解为新的元胞数组.

Ct = C';
Dvals = reshape([Ct{:}],[],M)*x.';
D = mat2cell(reshape(Dvals,N,[]),N,N*ones(M,1))

测试数据:

N = 4; M = 3; x = 1:M;
C = mat2cell(rand(N*M,N*M),N*ones(M,1),N*ones(M,1));

注意:这要求每个子矩阵的大小与问题中的相同。

关于Matlab 向量乘以元胞数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20112231/

相关文章:

R:将矩阵转换为 YES、NO 数据框

r - 将矩阵转换为列

matlab - Matlab 中的颜色条重复范围标签

arrays - arrayfun 具有具有不同维度输入的函数

matlab - 如何更改 `plotroc` 的图例中的类名?

Python - 矩阵外积

c - 在 C 中生成随机矩阵的问题

Python 矩阵乘法

matlab - 如何判断一个图是全连通的?

c++ - 生成伪随机正定矩阵