# Swap the first and last columns

82 views (last 30 days)
Zunaed Kibria on 16 Dec 2018
Answered: ARVIND KUMAR SINGH on 25 May 2020
function B = swap_ends(A)
B = A(:,[end , 2:end-1 , 1]);
end
tried this , but showing error , can any one help ?

Alessandro Galo on 26 Mar 2019
This works ;)
if size(A,2) ~= 1 & size(A,2) ~= 0
B = A(:,[end , 2:end-1 , 1])
else
B = A;
end

madhan ravi on 16 Dec 2018
Edited: madhan ravi on 16 Dec 2018
A=rand(4) % example matrix
B = swap_ends(A) % function call
function B = swap_ends(A) % function definition
A(:,[1 end])=A(:,[end 1]);
B=A;
end
Gives:
A =
0.5200 0.8475 0.4965 0.0832
0.7875 0.0289 0.0663 0.1867
0.2765 0.5650 0.1179 0.9095
0.0962 0.7098 0.3063 0.6303
B =
0.0832 0.8475 0.4965 0.5200
0.1867 0.0289 0.0663 0.7875
0.9095 0.5650 0.1179 0.2765
0.6303 0.7098 0.3063 0.0962
A=rand(1,5) % example row vector/column vector
B = swap_ends(A) % function call
function B = swap_ends(A) % function definition
A([1 end])=A([end 1]);
B=A;
end
Gives:
A =
0.6604 0.9767 0.4717 0.8576 0.9269
B =
0.9269 0.9767 0.4717 0.8576 0.6604
Walter Roberson on 26 Mar 2019
Alessandro Galo's solution does raise the good point that swapping using end subscript will fail if the array is empty on that dimension, so the swap should be protected with isempty()

Sunil Kumar Giri on 13 Jan 2020
function B = swap_ends(A)
B = A;
A(:,1) = A(:,end);
A(:,end) = B(:,1);
B = A
end

ARVIND KUMAR SINGH on 25 May 2020
function B = swap_ends(A)
[~,col] = size(A);
if col<2
B = A;
else
a = A(:,1);
b = A(:,col);
c = A(:,2:col-1);
B =[b c a];
end
end