使用Matlab对三维矩阵的左右翻转进行矢量化

5 matlab matrix vectorization flip

我有一个电影的3D矩阵(比如一个M大小为J*K*L 的矩阵).我想每帧左右翻转.使用fliplr(M)不起作用M必须是2-D矩阵.我知道我可以使用以下的for循环:

 for ii=1:size(M,3)
     M(:,:,ii)=fliplr( M(:,:,ii) )
 end
Run Code Online (Sandbox Code Playgroud)

这是一种"矢量化"的方式吗?

更广泛地说,就是一个"量化"的方式做任何Matlab的矩阵运算(的flipud,repmat在这种情况下,等)?

Rod*_*uis 4

或者,您可以使用简单的索引:

>> M = rand(3,4,5);
>> M(:, end:-1:1, :);
Run Code Online (Sandbox Code Playgroud)

这比 更快,资源消耗更少flipdim,而且我认为也更干净。

然而,对于某些人来说,end关键字的这种特殊用法令人困惑,所以如果您是其中之一,那flipdim就没问题了:)