gpt4 book ai didi

Matlab 向量乘以元胞数组

转载 作者:太空宇宙 更新时间:2023-11-03 20:30:11 26 4
gpt4 key购买 nike

我有一个向量 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com