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)),則此作品有效。
總結
以上是生活随笔為你收集整理的matlab矩阵对某一列求和,将矩阵中的每一列与另一列中的对应行相乘,然后在Matlab中求和...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java学生背景知识要求,好好学习Jav
- 下一篇: php解析multilpart,使用PH