matlab矩阵对某一列求和,将矩阵中的每一列与另一列中的对应行相乘,然后在Matlab中求和...

可以说我有矩阵A = [1 2; 3 4], B = [4 3; 2 1]。 我想将矩阵A ([1; 3], [2; 4])中的每一列乘以矩阵B ([4 3], [2 1])中的相应行,并对得出的矩阵求和。 我想出了以下代码:

C = zeros(size(A));

for i = 1 : size(A, 1)

C = C + A(:, i) * B(i, :);

end

可以使用一些数学技巧或Matlab函数重写它以摆脱for循环吗?

我看到我的问题对我想要的结果不明确。 结果应该精确地模仿提供的Matlab代码,因此我寻求一个矩阵,该矩阵由中间矩阵的矩阵求和给出,该矩阵是通过将每个列向量与来自两个矩阵的对应行向量相乘而创建的。 对于此特定示例,将由

C = A(:, 1) * B(1, :) + A(:, 2) * B(2, :);

我只是在寻找适用于任何兼容尺寸矩阵的通用,较少for循环的版本。

我一点都不了解matlab,但是根据我的研究,这应该可以工作:C = A * B,然后是result = sum(C(:))。 这会给您想要的结果吗? 来源:tutorialspoint.com/matlab/matlab_matrix_multiplication.htm,mathworks.com/matlabcentral/newsreader/view_thread/51252

根据您的更新,@ jodags答案是正确的。 C = A * B等效于您的matlab代码。

我只是在评论中尝试了我的建议,似乎可以使用此八度测试仪:

简短格式(仅适用于八度)

A = [1 2; 3 4], B = [4 3; 2 1]

X = sum((A * B)(:))

长格式(Matlab):

A = [1 2; 3 4]

B = [4 3; 2 1]

C = A * B      % Stop here if you want the exact result from your Matlab code

x = sum(C(:))  % To get the sum of the resulting matrix

资料来源:

https://www.tutorialspoint.com/matlab/matlab_matrix_multiplication.htm

https://www.mathworks.com/matlabcentral/newsreader/view_thread/51252

根据您的更新进行更新:

A * B的输出:

8    5

20   13

您的代码输出:

8    5

20   13

简短格式在Matlab中不起作用,仅在Octav中有效

我不明白这如何回答问题。 问题是要求矩阵结果,答案是标量。

在问题中,他说他想得到"求和矩阵的总和",所以最后一步是求出给定马蒂奇乘积的和。 也许我误读了原始帖子?

也许我是盲目的,但我看不到"给定马蒂奇积的总和"只是给定矩阵之和。

看起来

C = zeros(size(A));

for i = 1 : size(A, 1)

C = C + A(:, i) * B(i, :);

end

等价于矩阵乘法

C = A*B

用于方阵A和B。

同意 如果它们遵循线性代数规则,这也适用于其他维度:矩阵A和B的内部维度相同(即,当A中的列数与B中的行数匹配时; size(A,2)==size(B,1)时)。

您也可以在MATLAB中执行此操作以获取总和。

C=ones(1,2)*A*B*ones(2,1)

一般形式为

C=ones(1,size(A,1))*(A*B)*ones(size(B,2),1);

编辑

我为清楚起见,看到您更新了问题。矩阵乘积可以直接计算

C = A*B;

正如乔达格指出的。

如果您遵循线性代数的规则,则矩阵的内部尺寸是相同的(例如,当A中的列数与B中的行数匹配时; size(A,2)==size(B,1)),则此作品有效。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值