Matlab中矩阵与数组的组合

Matlab中矩阵与数组的组合,matlab,matrix,vector,Matlab,Matrix,Vector,我有一个矩阵d,它的维数是2x2x1000 d(:,:,1)= [ a1 b1 c1 d1] d(:,:,2)= [ a2 b2 c2 d2] 我有一个数组u1x1000 u=[u1 u2 ... u1000] . 我想创建一个矩阵M,其中M的每个元素等于矩阵d中的一个元素,在U向量中对应的元素处升高 M = [ a1^u1*a2^u2*...a1000^u1000 b1^u1*b2^u2*...b1000^u1000

我有一个矩阵d,它的维数是2x2x1000

d(:,:,1)= [ a1 b1
            c1 d1]

d(:,:,2)= [ a2 b2
            c2 d2]
我有一个数组u1x1000

 u=[u1 u2 ... u1000] . 
我想创建一个矩阵M,其中M的每个元素等于矩阵d中的一个元素,在U向量中对应的元素处升高

 M = [ a1^u1*a2^u2*...a1000^u1000   b1^u1*b2^u2*...b1000^u1000 
       c1^u1*c2^u2*...c1000^u1000   d1^u1*d2^u2*...d1000^u1000 ]
我试着写下这段代码:

  n_length =2 
    for k=1:length(d)
    for i = 1:n_length
         for j = 1:n_length

            M(i,j)= prod(d(i,j,k)^u(1,k));

         end 
    end
    end
但有点不对劲。虽然没有错误,但输出不符合预期。我认为我在实现上述等式时犯了一个错误。谁能帮我用上面的方法把d和U结合起来

以下是您的解决方案:

为要执行的操作编写通用函数。 例如:

现在您知道矩阵的第三维匹配(均为1000),bsxfun将为1000个元素中的每一个运行该函数(2x2矩阵d,vs单值U)

您可以使用执行从
d
u
的元素级功率计算,然后使用
prod
减少到
2D
,如下所示-

prod(bsxfun(@power,d,permute(u,[1,3,2])),3)
样本运行-

>> d
d(:,:,1) =
    0.3000    0.2000
    0.4000    0.5000
d(:,:,2) =
    0.6000    0.2000
    0.3000    0.5000
d(:,:,3) =
    0.4000    0.3000
    0.7000    0.2000
>> u
u =
     2     3     2
>> 0.3^2*0.6^3*0.4^2 % First output elem
ans =
    0.0031
>> 0.5^2*0.5^3*0.2^2 % Last output elem
ans =
    0.0013

>> prod(bsxfun(@power,d,permute(u,[1,3,2])),3)
ans =
    0.0031    0.0000
    0.0021    0.0013

“有错误”请包括完整的错误描述。谢谢,但我只想得到一个最终合并的M矩阵,大小为(2x2)。不是1000个大小为(2x2)的矩阵。
prod(bsxfun(@power,d,permute(u,[1,3,2])),3)
>> d
d(:,:,1) =
    0.3000    0.2000
    0.4000    0.5000
d(:,:,2) =
    0.6000    0.2000
    0.3000    0.5000
d(:,:,3) =
    0.4000    0.3000
    0.7000    0.2000
>> u
u =
     2     3     2
>> 0.3^2*0.6^3*0.4^2 % First output elem
ans =
    0.0031
>> 0.5^2*0.5^3*0.2^2 % Last output elem
ans =
    0.0013

>> prod(bsxfun(@power,d,permute(u,[1,3,2])),3)
ans =
    0.0031    0.0000
    0.0021    0.0013