【发布时间】:2016-01-22 05:07:26
【问题描述】:
我有A 矩阵,即16x16x155460。我有一个B 向量,它是12955x1。我想将每个1:16x1:16x1+12*n:12+12*n 与B(n) 的元素相乘。所以我的目标是根据B找到A的加权和。我这样做的方法如下(I don't want to use for-loop 和我的方法给出了错误的答案,我无法获得连续的 1:12 向量):
B = repmat(B,[1 16 16]);
B = permute(B,[2 3 1]);
B = repmat(B,[1 1 12]);
result = B.*(A);
作为一个小例子n=2:
A(:,:,1)=[1 2; 3 4]
A(:,:,2)=[1 2; 3 4]
A(:,:,3)=[1 2; 3 4]
A(:,:,4)=[1 2; 3 4]
B = [2,3]
结果是:
result(:,:,1)=A(:,:,1)*B(1);
result(:,:,2)=A(:,:,2)*B(1);
result(:,:,3)=A(:,:,1)*B(2);
result(:,:,4)=A(:,:,2)*B(2);
【问题讨论】:
-
输出数组大小是多少?
-
我先将矩阵重塑为
16x16x12x12955... -
我理解你的意思吗,你只使用
A(16,16,:)而不是 A 中的其他数据?你的公式1+12*n:12+12*n错了,不是0开头,超过了A的长度 -
那个例子让我很困惑:(
-
过度简化示例的陷阱真的是@beaker
标签: matlab matrix vectorization