I have just started learning MATLAB . Please find my codes below
m= ['A','B','C'];
cs=size(m,2);
for i=1:cs
for j=1:cs
if i~=j
s1=(m(i));s2=',';s3=(m(j));
s=strcat(s1,s2,s3);
disp(s);
end
end
end
It produces the following output on command window.
A,B
A,C
B,A
B,C
C,A
C,B
But , i want to wrap up all the outputs into a single matrix (or Cell Array ) , Lets say new_M . So that the values of new_M shall contain the all above values like this .
new_M (6,1) =
[ A,B
A,C
B,A
B,C
C,A
C,B ]
Your help will be highly appreciatated . Thanks in advance.
The idiomatic way to do this would be to use nchoosek
to get the indices you want and then use linear indexing:
m = ['A','B','C'] %// For a char array OR
m = {'A','B','C'} %// For a cell array
I = nchoosek(1:numel(m), 2)
new_M = m([I; I(:,end:-1:1)])