簡體   English   中英

Matlab 3D矩陣通過2D矩陣矢量化對三維進行轉換

[英]Matlab 3D matrix transform 3rd dimension by 2D matrix vectorization

我有3D矩陣A的大小N, M, 3和2D變換T大小的3, 3 ,我適用於矩陣的第三維A 如果相關,此3D矩陣是RGB圖像。

我當前的解決方案如下所示:

for i = 1:N
    for j = 1:M
        A(i, j, :) = T * [A(i, j, r); A(i, j, g); A(i, j, b)];
    end
end

但是我很好奇是否有矢量化的方法嗎?

你可以試試看 首先切換尺寸,使通道成為第一個:

B = permute(A,[3,1,2])

然后將B整形為大小為3xN * M的矩陣:

C = reshape(B,3,[])

現在計算一個矩陣乘法:

D = T*C;

然后,您需要重塑和重新排列:

E = permute(reshape(D,3,M,N),[2,3,1])

我沒有對其進行測試,因此可能缺少一些東西,但是通常這應該可以工作(而且速度很快!)

暫無
暫無

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

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