In the previous post, I introduced the problem of converting a three dimensional matrix (1xmxp) to a two dimensional matrix of size mxp using the squeeze function of matlab. In this post I am introducing a new solution, using function permute.

If you have read the previous post, you can jump directly to solution 2.

**The Problem**: I was given a three dimensional matrix (1xmxp), I need to convert it to a two dimensional matrix of size pxm.

**The Trivial Solution**: Nested loop. In addition to the time complexity, the solution make me feel like a dummy.

**What I did instead**: After 5 mins of google search, I found out a couple of solutions that I found helpful. I will share these with you below.

Let me explain with a concrete example. We need to generate a three dimensional matrix first, say size 1x3x4.

mat(:,:,1)=[1 2 3]; mat(:,:,2)=[4 5 6]; mat(:,:,3)=[7 8 9]; mat(:,:,4)=[10 11 12];

The goal is to convert this into a two dimensional matrix of size 4×3. The new matrix should look like the following:

new_mat = [1 2 3; 4 5 6; 7 8 9; 10 11 12;]

**Solution 1: Squeeze.**

This is explained in the previous post.

**Solution 2: Permute and Reshape**

new_mat = permute(mat,[3 2 1]); % function permute rearranges the dimensions of matrix mat % The order of the rearrangement is specified in the second argument % In this example, the third dimension and the first dimension was swapped.

The resulting matrix is just what we wanted