MATLAB Answers

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

3 views (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)

  0 Comments

Sign in to comment.

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

Show 2 older comments
Jan
Jan on 28 Jul 2013
@Jong: Why do you prefer number instead of cells? Why can't you see the contents of cells?
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)

Community Treasure Hunt

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

Start Hunting!

Translated by