How to make a general code for a set of pairs between 2 men and 3 women

1 view (last 30 days)
Hi, all
I just want to know how to make a code for a set of pairs between 2 men and 3 women. I used meshgrid function to generate pairs but I cannot make possible "a set of pairs". can you help me please? Thanks
An example of a set of pairs :
Given, Men = {M1, M2}; Women = {W1, W2, W3}
a set of pairs =
(M1, W1), (M2,W2)
(M1, W1), (M2,W3)
(M1, W2), (M2,W1)
(M1, W2), (M2,W3)
(M1, W3), (M2,W1)
(M1, W3), (M2,W2)

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 28 Jul 2013
Edited: Andrei Bobrov on 29 Jul 2013
M = {'M1' 'M2'}
W = {'W1' 'W2' 'W3'}
w = perms(1:numel(W));
w = w(:,1:numel(M));
s = size(w);
out = mat2cell(reshape([M(ones(s(1),1)*(1:2));W(w)],s(1),[]),...
ones(s(1),1),s(2)*ones(1,s(2));
ADD
M = 100 + (1:4); % males
W = 50 + (1:3); % women
[s,ii] = sort(cellfun('length',{M,W}));
jj = perms(1:s(2));
p1 = d{ii(2)}(jj(:,1:s(1)));
p2 = ones(size(p1,1),1)*d{ii(1)};
out = reshape([p2;p1],[],s(1)*2);
  5 Comments
Jong-Hwan Kim
Jong-Hwan Kim on 28 Jul 2013
Just my preference :) BTW, when I increase number of women or men, your code produce wrong results. Can you check that with 4 Men and 3 Women?

Sign in to comment.

More Answers (0)

Categories

Find more on Numeric Types in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!