MATLAB: Could anyone help me to solve the issue in the following code

matrix manipulation

code:
a=[0.0022;
0.0922;
0.0146;
0.2549];
[m,n]=size(a);
differences = bsxfun(@minus,reshape(a,m,1,n),reshape(a,1,m,n));
v = nonzeros(differences');
newmat = reshape(v,3,4)';
val = max(newmat');
V=val';
the above code executes and gives me the result.
but when i run the code below
a=[0.0022 0.0021;
0.0922 0.0938;
0.0146 0.0143;
0.2549 0.2509];
[m,n]=size(a);
differences = bsxfun(@minus,reshape(a,m,1,n),reshape(a,1,m,n))
v = nonzeros(differences');
newmat = reshape(v,3,4)'
val = max(newmat')
V=val'
I am error stating Error using '
Transpose on ND array is not defined. Use PERMUTE instead.
Error in (line 20)
v = nonzeros(differences');
Could anyone please help me on it.

Best Answer

"Could anyone please help me on it" - You have not exactly mentioned what help are you looking for. Your error message is self explanatory. In first case, the differences is a 4x4 2D matrix and transpose works on that. In second case, the differences is a 3D matrix with dimensions as 4x4x2 so transpose will not work here and you have to use 'permute'. If how to use permute is your doubt then see details here. Any other specific issues here?
Use this for your desired result:
a=[0.0022 0.0021;
0.0922 0.0938;
0.0146 0.0143;
0.2549 0.2509];
[m,n]=size(a);
differences = bsxfun(@minus,reshape(a,m,1,n),reshape(a,1,m,n))
v1 = nonzeros(differences(:,:,1)');
v2 = nonzeros(differences(:,:,2)');
newmat1 = reshape(v1,3,4)'
newmat2 = reshape(v2,3,4)'
val = [max(newmat1');max(newmat2')]
V=[val']