簡體   English   中英

Matlab將矩陣與矩陣沿第三維相乘

[英]Matlab multiply matrix with matrix along third dimension

我有一個大小為mxnx 3的矩陣A ,我有一個3x3矩陣K 現在我想要做的是這樣的事情:

for row = 1:m
 for col = 1:n
  A(row,col,:) = K*[A(row,col,1);A(row,col,2);A(row,col,3)];
 end
end

我希望有一個沒有循環的有效解決方案,因為循環非常慢,因為mxn通常是圖像的大小。

有人有個主意嗎?

M = 1000;
N = 1000;
L = 3;
A = rand(M,N,L);
K = rand(L,L);
Q = reshape((K * reshape( A, [M*N, L] ).' ).', [M, N, L]);

錯誤檢查:

Z = zeros(M,N,L);
for mm = 1 : M
  for nn = 1 : N
    Z(mm,nn,:) = K * squeeze( A(mm,nn,:) );
  end
end
max( abs( Z(:) - Q(:) ) )

ans =

      0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM