【发布时间】:2015-01-12 07:57:22
【问题描述】:
我对特定的矩阵乘法有疑问。
- 有一个矩阵 X(M x N) 和向量 b(1 x 3), a(1 x 3)。
- 我需要将 X 的每一列乘以 b,所以我会得到 N 个平方矩阵 (M x 3)。(请参见下面的示例)
- 然后我需要将这 N 个矩阵中的每一个与转置向量 a 相乘,这会将我的 N 个矩阵转换为长度为 M 的 N 个向量。
有没有没有循环的优雅方法?
我以前的代码不能正常工作:
[n,m] = size(x);
nn=3;
aa = [ 0.069 0.167 0.826];
bb = [ 0.132 0.302 0.917];
a = repmat(aa,[n 1]);
b = repmat(bb,[n 1]);
res = ((-x'*b)*a');
我有一个想法如何做到这一点,但我不知道如何通过放置原始矩阵的所有行(从 1 到 N)从 (M x N) 矩阵创建一行 (1 x N) 向量成向量的值。 示例:
A =[1 2 3; 11 22 33; 111 222 333]
A = [[1; 11; 111]; [2; 22; 222]; [3; 33; 333]]
我发现我什至无法初始化这样的结构。但是如果有办法做到这一点,我仍然需要.* 操作才能正常工作,例如:
A = [[1; 11; 111]; [2; 22; 222]]
A.*[1 3 3]
result: A = [[1 3 3; 11 33 33; 111 333 333]; [2 6 6; 22 66 66; 222 666 666]]
【问题讨论】:
-
您能否重新组织或改写您的问题,以免在此处使用的这么多变量之间看起来令人困惑 -
A、X、a、b?清楚地说明输入和预期输出? -
你的措辞很混乱,但我明白你想要什么的要点。给我一些时间来回答你的问题。
-
@Divakar - 我使用了我的心灵术士技能,并弄清楚了 OP 想要什么 :) 如果你也看看我不介意!
-
@greyxray - 我发现了一些已修复的错误。请检查我更新的帖子。祝你好运!
标签: matlab loops matrix vector multiplication