All Combination of Matrices from two single values

1 view (last 30 days)
Hello, Greetings! I have two values (suppose 1 and 2). How can I form all the possible combinations of 3*3 matrices from these two values. For example all the possible combinations of 2*2 matices from 1 and 2 are [1 2; 1 2]; [1 2; 2 1]; [1 1; 2 2]; [2 1; 2 1]; [1 1; 1 2]; [1 1; 2 1] etc...

Accepted Answer

Walter Roberson
Walter Roberson on 5 Oct 2022
values = [1 2];
N = 3;
outputs = reshape(values(dec2bin(0:2^(N^2)-1).' - '0' + 1), N, N, [])
outputs =
outputs(:,:,1) = 1 1 1 1 1 1 1 1 1 outputs(:,:,2) = 1 1 1 1 1 1 1 1 2 outputs(:,:,3) = 1 1 1 1 1 2 1 1 1 outputs(:,:,4) = 1 1 1 1 1 2 1 1 2 outputs(:,:,5) = 1 1 2 1 1 1 1 1 1 outputs(:,:,6) = 1 1 2 1 1 1 1 1 2 outputs(:,:,7) = 1 1 2 1 1 2 1 1 1 outputs(:,:,8) = 1 1 2 1 1 2 1 1 2 outputs(:,:,9) = 1 1 1 1 1 1 1 2 1 outputs(:,:,10) = 1 1 1 1 1 1 1 2 2 outputs(:,:,11) = 1 1 1 1 1 2 1 2 1 outputs(:,:,12) = 1 1 1 1 1 2 1 2 2 outputs(:,:,13) = 1 1 2 1 1 1 1 2 1 outputs(:,:,14) = 1 1 2 1 1 1 1 2 2 outputs(:,:,15) = 1 1 2 1 1 2 1 2 1 outputs(:,:,16) = 1 1 2 1 1 2 1 2 2 outputs(:,:,17) = 1 1 1 1 2 1 1 1 1 outputs(:,:,18) = 1 1 1 1 2 1 1 1 2 outputs(:,:,19) = 1 1 1 1 2 2 1 1 1 outputs(:,:,20) = 1 1 1 1 2 2 1 1 2 outputs(:,:,21) = 1 1 2 1 2 1 1 1 1 outputs(:,:,22) = 1 1 2 1 2 1 1 1 2 outputs(:,:,23) = 1 1 2 1 2 2 1 1 1 outputs(:,:,24) = 1 1 2 1 2 2 1 1 2 outputs(:,:,25) = 1 1 1 1 2 1 1 2 1 outputs(:,:,26) = 1 1 1 1 2 1 1 2 2 outputs(:,:,27) = 1 1 1 1 2 2 1 2 1 outputs(:,:,28) = 1 1 1 1 2 2 1 2 2 outputs(:,:,29) = 1 1 2 1 2 1 1 2 1 outputs(:,:,30) = 1 1 2 1 2 1 1 2 2 outputs(:,:,31) = 1 1 2 1 2 2 1 2 1 outputs(:,:,32) = 1 1 2 1 2 2 1 2 2 outputs(:,:,33) = 1 2 1 1 1 1 1 1 1 outputs(:,:,34) = 1 2 1 1 1 1 1 1 2 outputs(:,:,35) = 1 2 1 1 1 2 1 1 1 outputs(:,:,36) = 1 2 1 1 1 2 1 1 2 outputs(:,:,37) = 1 2 2 1 1 1 1 1 1 outputs(:,:,38) = 1 2 2 1 1 1 1 1 2 outputs(:,:,39) = 1 2 2 1 1 2 1 1 1 outputs(:,:,40) = 1 2 2 1 1 2 1 1 2 outputs(:,:,41) = 1 2 1 1 1 1 1 2 1 outputs(:,:,42) = 1 2 1 1 1 1 1 2 2 outputs(:,:,43) = 1 2 1 1 1 2 1 2 1 outputs(:,:,44) = 1 2 1 1 1 2 1 2 2 outputs(:,:,45) = 1 2 2 1 1 1 1 2 1 outputs(:,:,46) = 1 2 2 1 1 1 1 2 2 outputs(:,:,47) = 1 2 2 1 1 2 1 2 1 outputs(:,:,48) = 1 2 2 1 1 2 1 2 2 outputs(:,:,49) = 1 2 1 1 2 1 1 1 1 outputs(:,:,50) = 1 2 1 1 2 1 1 1 2 outputs(:,:,51) = 1 2 1 1 2 2 1 1 1 outputs(:,:,52) = 1 2 1 1 2 2 1 1 2 outputs(:,:,53) = 1 2 2 1 2 1 1 1 1 outputs(:,:,54) = 1 2 2 1 2 1 1 1 2 outputs(:,:,55) = 1 2 2 1 2 2 1 1 1 outputs(:,:,56) = 1 2 2 1 2 2 1 1 2 outputs(:,:,57) = 1 2 1 1 2 1 1 2 1 outputs(:,:,58) = 1 2 1 1 2 1 1 2 2 outputs(:,:,59) = 1 2 1 1 2 2 1 2 1 outputs(:,:,60) = 1 2 1 1 2 2 1 2 2 outputs(:,:,61) = 1 2 2 1 2 1 1 2 1 outputs(:,:,62) = 1 2 2 1 2 1 1 2 2 outputs(:,:,63) = 1 2 2 1 2 2 1 2 1 outputs(:,:,64) = 1 2 2 1 2 2 1 2 2 outputs(:,:,65) = 1 1 1 1 1 1 2 1 1 outputs(:,:,66) = 1 1 1 1 1 1 2 1 2 outputs(:,:,67) = 1 1 1 1 1 2 2 1 1 outputs(:,:,68) = 1 1 1 1 1 2 2 1 2 outputs(:,:,69) = 1 1 2 1 1 1 2 1 1 outputs(:,:,70) = 1 1 2 1 1 1 2 1 2 outputs(:,:,71) = 1 1 2 1 1 2 2 1 1 outputs(:,:,72) = 1 1 2 1 1 2 2 1 2 outputs(:,:,73) = 1 1 1 1 1 1 2 2 1 outputs(:,:,74) = 1 1 1 1 1 1 2 2 2 outputs(:,:,75) = 1 1 1 1 1 2 2 2 1 outputs(:,:,76) = 1 1 1 1 1 2 2 2 2 outputs(:,:,77) = 1 1 2 1 1 1 2 2 1 outputs(:,:,78) = 1 1 2 1 1 1 2 2 2 outputs(:,:,79) = 1 1 2 1 1 2 2 2 1 outputs(:,:,80) = 1 1 2 1 1 2 2 2 2 outputs(:,:,81) = 1 1 1 1 2 1 2 1 1 outputs(:,:,82) = 1 1 1 1 2 1 2 1 2 outputs(:,:,83) = 1 1 1 1 2 2 2 1 1 outputs(:,:,84) = 1 1 1 1 2 2 2 1 2 outputs(:,:,85) = 1 1 2 1 2 1 2 1 1 outputs(:,:,86) = 1 1 2 1 2 1 2 1 2 outputs(:,:,87) = 1 1 2 1 2 2 2 1 1 outputs(:,:,88) = 1 1 2 1 2 2 2 1 2 outputs(:,:,89) = 1 1 1 1 2 1 2 2 1 outputs(:,:,90) = 1 1 1 1 2 1 2 2 2 outputs(:,:,91) = 1 1 1 1 2 2 2 2 1 outputs(:,:,92) = 1 1 1 1 2 2 2 2 2 outputs(:,:,93) = 1 1 2 1 2 1 2 2 1 outputs(:,:,94) = 1 1 2 1 2 1 2 2 2 outputs(:,:,95) = 1 1 2 1 2 2 2 2 1 outputs(:,:,96) = 1 1 2 1 2 2 2 2 2 outputs(:,:,97) = 1 2 1 1 1 1 2 1 1 outputs(:,:,98) = 1 2 1 1 1 1 2 1 2 outputs(:,:,99) = 1 2 1 1 1 2 2 1 1 outputs(:,:,100) = 1 2 1 1 1 2 2 1 2 outputs(:,:,101) = 1 2 2 1 1 1 2 1 1 outputs(:,:,102) = 1 2 2 1 1 1 2 1 2 outputs(:,:,103) = 1 2 2 1 1 2 2 1 1 outputs(:,:,104) = 1 2 2 1 1 2 2 1 2 outputs(:,:,105) = 1 2 1 1 1 1 2 2 1 outputs(:,:,106) = 1 2 1 1 1 1 2 2 2 outputs(:,:,107) = 1 2 1 1 1 2 2 2 1 outputs(:,:,108) = 1 2 1 1 1 2 2 2 2 outputs(:,:,109) = 1 2 2 1 1 1 2 2 1 outputs(:,:,110) = 1 2 2 1 1 1 2 2 2 outputs(:,:,111) = 1 2 2 1 1 2 2 2 1 outputs(:,:,112) = 1 2 2 1 1 2 2 2 2 outputs(:,:,113) = 1 2 1 1 2 1 2 1 1 outputs(:,:,114) = 1 2 1 1 2 1 2 1 2 outputs(:,:,115) = 1 2 1 1 2 2 2 1 1 outputs(:,:,116) = 1 2 1 1 2 2 2 1 2 outputs(:,:,117) = 1 2 2 1 2 1 2 1 1 outputs(:,:,118) = 1 2 2 1 2 1 2 1 2 outputs(:,:,119) = 1 2 2 1 2 2 2 1 1 outputs(:,:,120) = 1 2 2 1 2 2 2 1 2 outputs(:,:,121) = 1 2 1 1 2 1 2 2 1 outputs(:,:,122) = 1 2 1 1 2 1 2 2 2 outputs(:,:,123) = 1 2 1 1 2 2 2 2 1 outputs(:,:,124) = 1 2 1 1 2 2 2 2 2 outputs(:,:,125) = 1 2 2 1 2 1 2 2 1 outputs(:,:,126) = 1 2 2 1 2 1 2 2 2 outputs(:,:,127) = 1 2 2 1 2 2 2 2 1 outputs(:,:,128) = 1 2 2 1 2 2 2 2 2 outputs(:,:,129) = 1 1 1 2 1 1 1 1 1 outputs(:,:,130) = 1 1 1 2 1 1 1 1 2 outputs(:,:,131) = 1 1 1 2 1 2 1 1 1 outputs(:,:,132) = 1 1 1 2 1 2 1 1 2 outputs(:,:,133) = 1 1 2 2 1 1 1 1 1 outputs(:,:,134) = 1 1 2 2 1 1 1 1 2 outputs(:,:,135) = 1 1 2 2 1 2 1 1 1 outputs(:,:,136) = 1 1 2 2 1 2 1 1 2 outputs(:,:,137) = 1 1 1 2 1 1 1 2 1 outputs(:,:,138) = 1 1 1 2 1 1 1 2 2 outputs(:,:,139) = 1 1 1 2 1 2 1 2 1 outputs(:,:,140) = 1 1 1 2 1 2 1 2 2 outputs(:,:,141) = 1 1 2 2 1 1 1 2 1 outputs(:,:,142) = 1 1 2 2 1 1 1 2 2 outputs(:,:,143) = 1 1 2 2 1 2 1 2 1 outputs(:,:,144) = 1 1 2 2 1 2 1 2 2 outputs(:,:,145) = 1 1 1 2 2 1 1 1 1 outputs(:,:,146) = 1 1 1 2 2 1 1 1 2 outputs(:,:,147) = 1 1 1 2 2 2 1 1 1 outputs(:,:,148) = 1 1 1 2 2 2 1 1 2 outputs(:,:,149) = 1 1 2 2 2 1 1 1 1 outputs(:,:,150) = 1 1 2 2 2 1 1 1 2 outputs(:,:,151) = 1 1 2 2 2 2 1 1 1 outputs(:,:,152) = 1 1 2 2 2 2 1 1 2 outputs(:,:,153) = 1 1 1 2 2 1 1 2 1 outputs(:,:,154) = 1 1 1 2 2 1 1 2 2 outputs(:,:,155) = 1 1 1 2 2 2 1 2 1 outputs(:,:,156) = 1 1 1 2 2 2 1 2 2 outputs(:,:,157) = 1 1 2 2 2 1 1 2 1 outputs(:,:,158) = 1 1 2 2 2 1 1 2 2 outputs(:,:,159) = 1 1 2 2 2 2 1 2 1 outputs(:,:,160) = 1 1 2 2 2 2 1 2 2 outputs(:,:,161) = 1 2 1 2 1 1 1 1 1 outputs(:,:,162) = 1 2 1 2 1 1 1 1 2 outputs(:,:,163) = 1 2 1 2 1 2 1 1 1 outputs(:,:,164) = 1 2 1 2 1 2 1 1 2 outputs(:,:,165) = 1 2 2 2 1 1 1 1 1 outputs(:,:,166) = 1 2 2 2 1 1 1 1 2 outputs(:,:,167) = 1 2 2 2 1 2 1 1 1 outputs(:,:,168) = 1 2 2 2 1 2 1 1 2 outputs(:,:,169) = 1 2 1 2 1 1 1 2 1 outputs(:,:,170) = 1 2 1 2 1 1 1 2 2 outputs(:,:,171) = 1 2 1 2 1 2 1 2 1 outputs(:,:,172) = 1 2 1 2 1 2 1 2 2 outputs(:,:,173) = 1 2 2 2 1 1 1 2 1 outputs(:,:,174) = 1 2 2 2 1 1 1 2 2 outputs(:,:,175) = 1 2 2 2 1 2 1 2 1 outputs(:,:,176) = 1 2 2 2 1 2 1 2 2 outputs(:,:,177) = 1 2 1 2 2 1 1 1 1 outputs(:,:,178) = 1 2 1 2 2 1 1 1 2 outputs(:,:,179) = 1 2 1 2 2 2 1 1 1 outputs(:,:,180) = 1 2 1 2 2 2 1 1 2 outputs(:,:,181) = 1 2 2 2 2 1 1 1 1 outputs(:,:,182) = 1 2 2 2 2 1 1 1 2 outputs(:,:,183) = 1 2 2 2 2 2 1 1 1 outputs(:,:,184) = 1 2 2 2 2 2 1 1 2 outputs(:,:,185) = 1 2 1 2 2 1 1 2 1 outputs(:,:,186) = 1 2 1 2 2 1 1 2 2 outputs(:,:,187) = 1 2 1 2 2 2 1 2 1 outputs(:,:,188) = 1 2 1 2 2 2 1 2 2 outputs(:,:,189) = 1 2 2 2 2 1 1 2 1 outputs(:,:,190) = 1 2 2 2 2 1 1 2 2 outputs(:,:,191) = 1 2 2 2 2 2 1 2 1 outputs(:,:,192) = 1 2 2 2 2 2 1 2 2 outputs(:,:,193) = 1 1 1 2 1 1 2 1 1 outputs(:,:,194) = 1 1 1 2 1 1 2 1 2 outputs(:,:,195) = 1 1 1 2 1 2 2 1 1 outputs(:,:,196) = 1 1 1 2 1 2 2 1 2 outputs(:,:,197) = 1 1 2 2 1 1 2 1 1 outputs(:,:,198) = 1 1 2 2 1 1 2 1 2 outputs(:,:,199) = 1 1 2 2 1 2 2 1 1 outputs(:,:,200) = 1 1 2 2 1 2 2 1 2 outputs(:,:,201) = 1 1 1 2 1 1 2 2 1 outputs(:,:,202) = 1 1 1 2 1 1 2 2 2 outputs(:,:,203) = 1 1 1 2 1 2 2 2 1 outputs(:,:,204) = 1 1 1 2 1 2 2 2 2 outputs(:,:,205) = 1 1 2 2 1 1 2 2 1 outputs(:,:,206) = 1 1 2 2 1 1 2 2 2 outputs(:,:,207) = 1 1 2 2 1 2 2 2 1 outputs(:,:,208) = 1 1 2 2 1 2 2 2 2 outputs(:,:,209) = 1 1 1 2 2 1 2 1 1 outputs(:,:,210) = 1 1 1 2 2 1 2 1 2 outputs(:,:,211) = 1 1 1 2 2 2 2 1 1 outputs(:,:,212) = 1 1 1 2 2 2 2 1 2 outputs(:,:,213) = 1 1 2 2 2 1 2 1 1 outputs(:,:,214) = 1 1 2 2 2 1 2 1 2 outputs(:,:,215) = 1 1 2 2 2 2 2 1 1 outputs(:,:,216) = 1 1 2 2 2 2 2 1 2 outputs(:,:,217) = 1 1 1 2 2 1 2 2 1 outputs(:,:,218) = 1 1 1 2 2 1 2 2 2 outputs(:,:,219) = 1 1 1 2 2 2 2 2 1 outputs(:,:,220) = 1 1 1 2 2 2 2 2 2 outputs(:,:,221) = 1 1 2 2 2 1 2 2 1 outputs(:,:,222) = 1 1 2 2 2 1 2 2 2 outputs(:,:,223) = 1 1 2 2 2 2 2 2 1 outputs(:,:,224) = 1 1 2 2 2 2 2 2 2 outputs(:,:,225) = 1 2 1 2 1 1 2 1 1 outputs(:,:,226) = 1 2 1 2 1 1 2 1 2 outputs(:,:,227) = 1 2 1 2 1 2 2 1 1 outputs(:,:,228) = 1 2 1 2 1 2 2 1 2 outputs(:,:,229) = 1 2 2 2 1 1 2 1 1 outputs(:,:,230) = 1 2 2 2 1 1 2 1 2 outputs(:,:,231) = 1 2 2 2 1 2 2 1 1 outputs(:,:,232) = 1 2 2 2 1 2 2 1 2 outputs(:,:,233) = 1 2 1 2 1 1 2 2 1 outputs(:,:,234) = 1 2 1 2 1 1 2 2 2 outputs(:,:,235) = 1 2 1 2 1 2 2 2 1 outputs(:,:,236) = 1 2 1 2 1 2 2 2 2 outputs(:,:,237) = 1 2 2 2 1 1 2 2 1 outputs(:,:,238) = 1 2 2 2 1 1 2 2 2 outputs(:,:,239) = 1 2 2 2 1 2 2 2 1 outputs(:,:,240) = 1 2 2 2 1 2 2 2 2 outputs(:,:,241) = 1 2 1 2 2 1 2 1 1 outputs(:,:,242) = 1 2 1 2 2 1 2 1 2 outputs(:,:,243) = 1 2 1 2 2 2 2 1 1 outputs(:,:,244) = 1 2 1 2 2 2 2 1 2 outputs(:,:,245) = 1 2 2 2 2 1 2 1 1 outputs(:,:,246) = 1 2 2 2 2 1 2 1 2 outputs(:,:,247) = 1 2 2 2 2 2 2 1 1 outputs(:,:,248) = 1 2 2 2 2 2 2 1 2 outputs(:,:,249) = 1 2 1 2 2 1 2 2 1 outputs(:,:,250) = 1 2 1 2 2 1 2 2 2 outputs(:,:,251) = 1 2 1 2 2 2 2 2 1 outputs(:,:,252) = 1 2 1 2 2 2 2 2 2 outputs(:,:,253) = 1 2 2 2 2 1 2 2 1 outputs(:,:,254) = 1 2 2 2 2 1 2 2 2 outputs(:,:,255) = 1 2 2 2 2 2 2 2 1 outputs(:,:,256) = 1 2 2 2 2 2 2 2 2 outputs(:,:,257) = 2 1 1 1 1 1 1 1 1 outputs(:,:,258) = 2 1 1 1 1 1 1 1 2 outputs(:,:,259) = 2 1 1 1 1 2 1 1 1 outputs(:,:,260) = 2 1 1 1 1 2 1 1 2 outputs(:,:,261) = 2 1 2 1 1 1 1 1 1 outputs(:,:,262) = 2 1 2 1 1 1 1 1 2 outputs(:,:,263) = 2 1 2 1 1 2 1 1 1 outputs(:,:,264) = 2 1 2 1 1 2 1 1 2 outputs(:,:,265) = 2 1 1 1 1 1 1 2 1 outputs(:,:,266) = 2 1 1 1 1 1 1 2 2 outputs(:,:,267) = 2 1 1 1 1 2 1 2 1 outputs(:,:,268) = 2 1 1 1 1 2 1 2 2 outputs(:,:,269) = 2 1 2 1 1 1 1 2 1 outputs(:,:,270) = 2 1 2 1 1 1 1 2 2 outputs(:,:,271) = 2 1 2 1 1 2 1 2 1 outputs(:,:,272) = 2 1 2 1 1 2 1 2 2 outputs(:,:,273) = 2 1 1 1 2 1 1 1 1 outputs(:,:,274) = 2 1 1 1 2 1 1 1 2 outputs(:,:,275) = 2 1 1 1 2 2 1 1 1 outputs(:,:,276) = 2 1 1 1 2 2 1 1 2 outputs(:,:,277) = 2 1 2 1 2 1 1 1 1 outputs(:,:,278) = 2 1 2 1 2 1 1 1 2 outputs(:,:,279) = 2 1 2 1 2 2 1 1 1 outputs(:,:,280) = 2 1 2 1 2 2 1 1 2 outputs(:,:,281) = 2 1 1 1 2 1 1 2 1 outputs(:,:,282) = 2 1 1 1 2 1 1 2 2 outputs(:,:,283) = 2 1 1 1 2 2 1 2 1 outputs(:,:,284) = 2 1 1 1 2 2 1 2 2 outputs(:,:,285) = 2 1 2 1 2 1 1 2 1 outputs(:,:,286) = 2 1 2 1 2 1 1 2 2 outputs(:,:,287) = 2 1 2 1 2 2 1 2 1 outputs(:,:,288) = 2 1 2 1 2 2 1 2 2 outputs(:,:,289) = 2 2 1 1 1 1 1 1 1 outputs(:,:,290) = 2 2 1 1 1 1 1 1 2 outputs(:,:,291) = 2 2 1 1 1 2 1 1 1 outputs(:,:,292) = 2 2 1 1 1 2 1 1 2 outputs(:,:,293) = 2 2 2 1 1 1 1 1 1 outputs(:,:,294) = 2 2 2 1 1 1 1 1 2 outputs(:,:,295) = 2 2 2 1 1 2 1 1 1 outputs(:,:,296) = 2 2 2 1 1 2 1 1 2 outputs(:,:,297) = 2 2 1 1 1 1 1 2 1 outputs(:,:,298) = 2 2 1 1 1 1 1 2 2 outputs(:,:,299) = 2 2 1 1 1 2 1 2 1 outputs(:,:,300) = 2 2 1 1 1 2 1 2 2 outputs(:,:,301) = 2 2 2 1 1 1 1 2 1 outputs(:,:,302) = 2 2 2 1 1 1 1 2 2 outputs(:,:,303) = 2 2 2 1 1 2 1 2 1 outputs(:,:,304) = 2 2 2 1 1 2 1 2 2 outputs(:,:,305) = 2 2 1 1 2 1 1 1 1 outputs(:,:,306) = 2 2 1 1 2 1 1 1 2 outputs(:,:,307) = 2 2 1 1 2 2 1 1 1 outputs(:,:,308) = 2 2 1 1 2 2 1 1 2 outputs(:,:,309) = 2 2 2 1 2 1 1 1 1 outputs(:,:,310) = 2 2 2 1 2 1 1 1 2 outputs(:,:,311) = 2 2 2 1 2 2 1 1 1 outputs(:,:,312) = 2 2 2 1 2 2 1 1 2 outputs(:,:,313) = 2 2 1 1 2 1 1 2 1 outputs(:,:,314) = 2 2 1 1 2 1 1 2 2 outputs(:,:,315) = 2 2 1 1 2 2 1 2 1 outputs(:,:,316) = 2 2 1 1 2 2 1 2 2 outputs(:,:,317) = 2 2 2 1 2 1 1 2 1 outputs(:,:,318) = 2 2 2 1 2 1 1 2 2 outputs(:,:,319) = 2 2 2 1 2 2 1 2 1 outputs(:,:,320) = 2 2 2 1 2 2 1 2 2 outputs(:,:,321) = 2 1 1 1 1 1 2 1 1 outputs(:,:,322) = 2 1 1 1 1 1 2 1 2 outputs(:,:,323) = 2 1 1 1 1 2 2 1 1 outputs(:,:,324) = 2 1 1 1 1 2 2 1 2 outputs(:,:,325) = 2 1 2 1 1 1 2 1 1 outputs(:,:,326) = 2 1 2 1 1 1 2 1 2 outputs(:,:,327) = 2 1 2 1 1 2 2 1 1 outputs(:,:,328) = 2 1 2 1 1 2 2 1 2 outputs(:,:,329) = 2 1 1 1 1 1 2 2 1 outputs(:,:,330) = 2 1 1 1 1 1 2 2 2 outputs(:,:,331) = 2 1 1 1 1 2 2 2 1 outputs(:,:,332) = 2 1 1 1 1 2 2 2 2 outputs(:,:,333) = 2 1 2 1 1 1 2 2 1 outputs(:,:,334) = 2 1 2 1 1 1 2 2 2 outputs(:,:,335) = 2 1 2 1 1 2 2 2 1 outputs(:,:,336) = 2 1 2 1 1 2 2 2 2 outputs(:,:,337) = 2 1 1 1 2 1 2 1 1 outputs(:,:,338) = 2 1 1 1 2 1 2 1 2 outputs(:,:,339) = 2 1 1 1 2 2 2 1 1 outputs(:,:,340) = 2 1 1 1 2 2 2 1 2 outputs(:,:,341) = 2 1 2 1 2 1 2 1 1 outputs(:,:,342) = 2 1 2 1 2 1 2 1 2 outputs(:,:,343) = 2 1 2 1 2 2 2 1 1 outputs(:,:,344) = 2 1 2 1 2 2 2 1 2 outputs(:,:,345) = 2 1 1 1 2 1 2 2 1 outputs(:,:,346) = 2 1 1 1 2 1 2 2 2 outputs(:,:,347) = 2 1 1 1 2 2 2 2 1 outputs(:,:,348) = 2 1 1 1 2 2 2 2 2 outputs(:,:,349) = 2 1 2 1 2 1 2 2 1 outputs(:,:,350) = 2 1 2 1 2 1 2 2 2 outputs(:,:,351) = 2 1 2 1 2 2 2 2 1 outputs(:,:,352) = 2 1 2 1 2 2 2 2 2 outputs(:,:,353) = 2 2 1 1 1 1 2 1 1 outputs(:,:,354) = 2 2 1 1 1 1 2 1 2 outputs(:,:,355) = 2 2 1 1 1 2 2 1 1 outputs(:,:,356) = 2 2 1 1 1 2 2 1 2 outputs(:,:,357) = 2 2 2 1 1 1 2 1 1 outputs(:,:,358) = 2 2 2 1 1 1 2 1 2 outputs(:,:,359) = 2 2 2 1 1 2 2 1 1 outputs(:,:,360) = 2 2 2 1 1 2 2 1 2 outputs(:,:,361) = 2 2 1 1 1 1 2 2 1 outputs(:,:,362) = 2 2 1 1 1 1 2 2 2 outputs(:,:,363) = 2 2 1 1 1 2 2 2 1 outputs(:,:,364) = 2 2 1 1 1 2 2 2 2 outputs(:,:,365) = 2 2 2 1 1 1 2 2 1 outputs(:,:,366) = 2 2 2 1 1 1 2 2 2 outputs(:,:,367) = 2 2 2 1 1 2 2 2 1 outputs(:,:,368) = 2 2 2 1 1 2 2 2 2 outputs(:,:,369) = 2 2 1 1 2 1 2 1 1 outputs(:,:,370) = 2 2 1 1 2 1 2 1 2 outputs(:,:,371) = 2 2 1 1 2 2 2 1 1 outputs(:,:,372) = 2 2 1 1 2 2 2 1 2 outputs(:,:,373) = 2 2 2 1 2 1 2 1 1 outputs(:,:,374) = 2 2 2 1 2 1 2 1 2 outputs(:,:,375) = 2 2 2 1 2 2 2 1 1 outputs(:,:,376) = 2 2 2 1 2 2 2 1 2 outputs(:,:,377) = 2 2 1 1 2 1 2 2 1 outputs(:,:,378) = 2 2 1 1 2 1 2 2 2 outputs(:,:,379) = 2 2 1 1 2 2 2 2 1 outputs(:,:,380) = 2 2 1 1 2 2 2 2 2 outputs(:,:,381) = 2 2 2 1 2 1 2 2 1 outputs(:,:,382) = 2 2 2 1 2 1 2 2 2 outputs(:,:,383) = 2 2 2 1 2 2 2 2 1 outputs(:,:,384) = 2 2 2 1 2 2 2 2 2 outputs(:,:,385) = 2 1 1 2 1 1 1 1 1 outputs(:,:,386) = 2 1 1 2 1 1 1 1 2 outputs(:,:,387) = 2 1 1 2 1 2 1 1 1 outputs(:,:,388) = 2 1 1 2 1 2 1 1 2 outputs(:,:,389) = 2 1 2 2 1 1 1 1 1 outputs(:,:,390) = 2 1 2 2 1 1 1 1 2 outputs(:,:,391) = 2 1 2 2 1 2 1 1 1 outputs(:,:,392) = 2 1 2 2 1 2 1 1 2 outputs(:,:,393) = 2 1 1 2 1 1 1 2 1 outputs(:,:,394) = 2 1 1 2 1 1 1 2 2 outputs(:,:,395) = 2 1 1 2 1 2 1 2 1 outputs(:,:,396) = 2 1 1 2 1 2 1 2 2 outputs(:,:,397) = 2 1 2 2 1 1 1 2 1 outputs(:,:,398) = 2 1 2 2 1 1 1 2 2 outputs(:,:,399) = 2 1 2 2 1 2 1 2 1 outputs(:,:,400) = 2 1 2 2 1 2 1 2 2 outputs(:,:,401) = 2 1 1 2 2 1 1 1 1 outputs(:,:,402) = 2 1 1 2 2 1 1 1 2 outputs(:,:,403) = 2 1 1 2 2 2 1 1 1 outputs(:,:,404) = 2 1 1 2 2 2 1 1 2 outputs(:,:,405) = 2 1 2 2 2 1 1 1 1 outputs(:,:,406) = 2 1 2 2 2 1 1 1 2 outputs(:,:,407) = 2 1 2 2 2 2 1 1 1 outputs(:,:,408) = 2 1 2 2 2 2 1 1 2 outputs(:,:,409) = 2 1 1 2 2 1 1 2 1 outputs(:,:,410) = 2 1 1 2 2 1 1 2 2 outputs(:,:,411) = 2 1 1 2 2 2 1 2 1 outputs(:,:,412) = 2 1 1 2 2 2 1 2 2 outputs(:,:,413) = 2 1 2 2 2 1 1 2 1 outputs(:,:,414) = 2 1 2 2 2 1 1 2 2 outputs(:,:,415) = 2 1 2 2 2 2 1 2 1 outputs(:,:,416) = 2 1 2 2 2 2 1 2 2 outputs(:,:,417) = 2 2 1 2 1 1 1 1 1 outputs(:,:,418) = 2 2 1 2 1 1 1 1 2 outputs(:,:,419) = 2 2 1 2 1 2 1 1 1 outputs(:,:,420) = 2 2 1 2 1 2 1 1 2 outputs(:,:,421) = 2 2 2 2 1 1 1 1 1 outputs(:,:,422) = 2 2 2 2 1 1 1 1 2 outputs(:,:,423) = 2 2 2 2 1 2 1 1 1 outputs(:,:,424) = 2 2 2 2 1 2 1 1 2 outputs(:,:,425) = 2 2 1 2 1 1 1 2 1 outputs(:,:,426) = 2 2 1 2 1 1 1 2 2 outputs(:,:,427) = 2 2 1 2 1 2 1 2 1 outputs(:,:,428) = 2 2 1 2 1 2 1 2 2 outputs(:,:,429) = 2 2 2 2 1 1 1 2 1 outputs(:,:,430) = 2 2 2 2 1 1 1 2 2 outputs(:,:,431) = 2 2 2 2 1 2 1 2 1 outputs(:,:,432) = 2 2 2 2 1 2 1 2 2 outputs(:,:,433) = 2 2 1 2 2 1 1 1 1 outputs(:,:,434) = 2 2 1 2 2 1 1 1 2 outputs(:,:,435) = 2 2 1 2 2 2 1 1 1 outputs(:,:,436) = 2 2 1 2 2 2 1 1 2 outputs(:,:,437) = 2 2 2 2 2 1 1 1 1 outputs(:,:,438) = 2 2 2 2 2 1 1 1 2 outputs(:,:,439) = 2 2 2 2 2 2 1 1 1 outputs(:,:,440) = 2 2 2 2 2 2 1 1 2 outputs(:,:,441) = 2 2 1 2 2 1 1 2 1 outputs(:,:,442) = 2 2 1 2 2 1 1 2 2 outputs(:,:,443) = 2 2 1 2 2 2 1 2 1 outputs(:,:,444) = 2 2 1 2 2 2 1 2 2 outputs(:,:,445) = 2 2 2 2 2 1 1 2 1 outputs(:,:,446) = 2 2 2 2 2 1 1 2 2 outputs(:,:,447) = 2 2 2 2 2 2 1 2 1 outputs(:,:,448) = 2 2 2 2 2 2 1 2 2 outputs(:,:,449) = 2 1 1 2 1 1 2 1 1 outputs(:,:,450) = 2 1 1 2 1 1 2 1 2 outputs(:,:,451) = 2 1 1 2 1 2 2 1 1 outputs(:,:,452) = 2 1 1 2 1 2 2 1 2 outputs(:,:,453) = 2 1 2 2 1 1 2 1 1 outputs(:,:,454) = 2 1 2 2 1 1 2 1 2 outputs(:,:,455) = 2 1 2 2 1 2 2 1 1 outputs(:,:,456) = 2 1 2 2 1 2 2 1 2 outputs(:,:,457) = 2 1 1 2 1 1 2 2 1 outputs(:,:,458) = 2 1 1 2 1 1 2 2 2 outputs(:,:,459) = 2 1 1 2 1 2 2 2 1 outputs(:,:,460) = 2 1 1 2 1 2 2 2 2 outputs(:,:,461) = 2 1 2 2 1 1 2 2 1 outputs(:,:,462) = 2 1 2 2 1 1 2 2 2 outputs(:,:,463) = 2 1 2 2 1 2 2 2 1 outputs(:,:,464) = 2 1 2 2 1 2 2 2 2 outputs(:,:,465) = 2 1 1 2 2 1 2 1 1 outputs(:,:,466) = 2 1 1 2 2 1 2 1 2 outputs(:,:,467) = 2 1 1 2 2 2 2 1 1 outputs(:,:,468) = 2 1 1 2 2 2 2 1 2 outputs(:,:,469) = 2 1 2 2 2 1 2 1 1 outputs(:,:,470) = 2 1 2 2 2 1 2 1 2 outputs(:,:,471) = 2 1 2 2 2 2 2 1 1 outputs(:,:,472) = 2 1 2 2 2 2 2 1 2 outputs(:,:,473) = 2 1 1 2 2 1 2 2 1 outputs(:,:,474) = 2 1 1 2 2 1 2 2 2 outputs(:,:,475) = 2 1 1 2 2 2 2 2 1 outputs(:,:,476) = 2 1 1 2 2 2 2 2 2 outputs(:,:,477) = 2 1 2 2 2 1 2 2 1 outputs(:,:,478) = 2 1 2 2 2 1 2 2 2 outputs(:,:,479) = 2 1 2 2 2 2 2 2 1 outputs(:,:,480) = 2 1 2 2 2 2 2 2 2 outputs(:,:,481) = 2 2 1 2 1 1 2 1 1 outputs(:,:,482) = 2 2 1 2 1 1 2 1 2 outputs(:,:,483) = 2 2 1 2 1 2 2 1 1 outputs(:,:,484) = 2 2 1 2 1 2 2 1 2 outputs(:,:,485) = 2 2 2 2 1 1 2 1 1 outputs(:,:,486) = 2 2 2 2 1 1 2 1 2 outputs(:,:,487) = 2 2 2 2 1 2 2 1 1 outputs(:,:,488) = 2 2 2 2 1 2 2 1 2 outputs(:,:,489) = 2 2 1 2 1 1 2 2 1 outputs(:,:,490) = 2 2 1 2 1 1 2 2 2 outputs(:,:,491) = 2 2 1 2 1 2 2 2 1 outputs(:,:,492) = 2 2 1 2 1 2 2 2 2 outputs(:,:,493) = 2 2 2 2 1 1 2 2 1 outputs(:,:,494) = 2 2 2 2 1 1 2 2 2 outputs(:,:,495) = 2 2 2 2 1 2 2 2 1 outputs(:,:,496) = 2 2 2 2 1 2 2 2 2 outputs(:,:,497) = 2 2 1 2 2 1 2 1 1 outputs(:,:,498) = 2 2 1 2 2 1 2 1 2 outputs(:,:,499) = 2 2 1 2 2 2 2 1 1 outputs(:,:,500) = 2 2 1 2 2 2 2 1 2 outputs(:,:,501) = 2 2 2 2 2 1 2 1 1 outputs(:,:,502) = 2 2 2 2 2 1 2 1 2 outputs(:,:,503) = 2 2 2 2 2 2 2 1 1 outputs(:,:,504) = 2 2 2 2 2 2 2 1 2 outputs(:,:,505) = 2 2 1 2 2 1 2 2 1 outputs(:,:,506) = 2 2 1 2 2 1 2 2 2 outputs(:,:,507) = 2 2 1 2 2 2 2 2 1 outputs(:,:,508) = 2 2 1 2 2 2 2 2 2 outputs(:,:,509) = 2 2 2 2 2 1 2 2 1 outputs(:,:,510) = 2 2 2 2 2 1 2 2 2 outputs(:,:,511) = 2 2 2 2 2 2 2 2 1 outputs(:,:,512) = 2 2 2 2 2 2 2 2 2
  15 Comments
Torsten
Torsten on 13 Oct 2022
Edited: Torsten on 13 Oct 2022
The complete code can be downloaded here:
list = SetPartition(15, 3);
size(list)
ans = 1×2
2375101 1
icount = 0;
for i = 1:size(list,1)
if (numel(list{i}{1})==3) && (numel(list{i}{2})==4)
icount = icount + 1;
list1{icount}{1} = list{i}{1};
list1{icount}{2} = list{i}{2};
list1{icount}{3} = list{i}{3};
end
if (numel(list{i}{2})==3) && (numel(list{i}{3})==4)
icount = icount + 1;
list1{icount}{1} = list{i}{2};
list1{icount}{2} = list{i}{3};
list1{icount}{3} = list{i}{1};
end
if (numel(list{i}{1})==3) && (numel(list{i}{3})==4)
icount = icount + 1;
list1{icount}{1} = list{i}{1};
list1{icount}{2} = list{i}{3};
list1{icount}{3} = list{i}{2};
end
if (numel(list{i}{2})==3) && (numel(list{i}{1})==4)
icount = icount + 1;
list1{icount}{1} = list{i}{2};
list1{icount}{2} = list{i}{1};
list1{icount}{3} = list{i}{3};
end
if (numel(list{i}{3})==3) && (numel(list{i}{2})==4)
icount = icount + 1;
list1{icount}{1} = list{i}{3};
list1{icount}{2} = list{i}{2};
list1{icount}{3} = list{i}{1};
end
if (numel(list{i}{3})==3) && (numel(list{i}{1})==4)
icount = icount + 1;
list1{icount}{1} = list{i}{3};
list1{icount}{2} = list{i}{1};
list1{icount}{3} = list{i}{2};
end
end
A = zeros(icount,15);
for i = 1:icount
A(i,list1{i}{1}) = 4;
A(i,list1{i}{2}) = 6;
A(i,list1{i}{3}) = 10;
end
%Print number of (3x5) matrices = nchoosek(15,3) * nchoosek(12,4) = 225225
icount
icount = 225225
A = unique(A,'rows');
size(A,1)
ans = 225225
A = reshape(A,icount,3,5);
function list = SetPartition(n, k)
% Purpose: Set partitioning
% LIST = SetPartition(N)
% N is an integer
% Return the cell list of all partitions of the integer set {1:N}.
% Output LIST is the cell of size (B x 1), where B is Bell number B(n),
% the number of ways of partitionning. Each list{j} is a partition of the
% set {1:N}.
%
% LIST = SetPartition(N, K)
% N and K are integers. Specify the fixed size K of the partitions.
% Return the cell list of all partitions of the integer set {1:N} in K
% non-empty subsets.
% Output LIST is the cell of size (S x 1), where S Stirling number of the
% second kind S(n,k). Each list{j} is a partition of {1:N} having
% exactly K non-empty subsets.
% LIST is large for N large (of course) and K ~ N/2
%
% User can provide a set with elements different than {1:N} by substitute
% the first input argument (N) with SetElements
% >> LIST = SetPartition(SetElements, ...)
% where SetElements is an array or cell array of N elements.
%
% USAGE EXAMPLE 1:
%
% % Find all the length-2 partitions of {1,2,3,4}
% p=SetPartition(4,2);
% % Display
% fprintf('All the length-2 partitions of {1,2,3,4} are:\n')
% for i=1:size(p,1)
% fprintf('\t')
% for j=1:length(p{i})
% s = sprintf('%d,', p{i}{j});
% s(end)=[];
% s = sprintf('{%s}', s);
% if j<length(p{i})
% s = sprintf('%s + ', s);
% end
% fprintf('%s', s)
% end
% fprintf('\n')
% end
%
% EXAMPLE 2:
% p=SetPartition({'mouse' 'dog' 'cat'});
%
% Notes:
% - The result has the same class as N.
% - The result size growth very steep with respect to N. It advisable to
% call PARTITION with N <= 11.
% - Recursive algorithm in a general case (i.e. when only N is provided)
% Iteration (derecursive loops) when K is specified.
%
% See also Bell, Stirling2nd, nchoosek, ndgrid, perms, DispPartObj,
% partitions, partdisp (Matt Fig's FEX File ID: #24185)
%
% Author: Bruno Luong <brunoluong@yahoo.com>
% History
% Original: 16-May-2009
% 17-May-2009: No more sorting + derecurse when K is provided
% 18-May-2009: Fix the bug for N=0, minor improvements
% 23-May-2003: Possibility to partition generic set elements
% 02-Jun-2009: comments change
if iscell(n) || ~isscalar(n) % NOTE: isscalar({1}) is TRUE
% Generic set elements
elements = reshape(n,1,[]);
n = size(elements,2); % double
if nargin>=2 % cast n to the same class of k
n = feval(class(k), n);
end
else
% standard set
elements = (1:n);
end
n = round(n);
if n<0
error('Partition requires n>=0: n=%d', n);
end
if nargin<2
if n==0
list = {{zeros(0,1)}};
else
list = partall(n, elements);
end
else
k = round(k);
% Cast k to the same class of n
k = feval(class(n), k);
if k>n
error('SetPartition requires k<=n: k=%d, n=%d', k, n);
elseif k<0
error('SetPartition requires k>=0: k=%d', k);
elseif k==0
if n>0
list = {};
else %if n==0
list = {{}};
end
else
list = partk(n, k, elements);
end
end
end % SetPartition
function list = partall(n, elements)
% LIST = PARTALL(N)
% Return the cell list of all partitions of the integer set {1:n}
% Output LIST is the cell of size (b x 1), where b is Bell number Bn.
% Each list{j} is a partition of {1:n}
if n==1
list = {{elements(n)}};
else
% Allocate
bn = Bell(n);
list = cell(bn, 1);
pos = 0;
% recursive call
lp = partall(n-1, elements);
for i=1:size(lp,1)
part_i = insert(lp{i}, n, 1, elements);
list(pos+(1:size(part_i,1))) = part_i;
pos = pos + size(part_i,1);
end
end
end % partall
function list = partk(n, k, elements)
% LIST = PARTK(N, K)
% Return the cell list of all partitions of the integer set {1:n} in k
% non-empty subsets.
% Output LIST is the cell of size (s x 1), where s Stirling number of the
% second kind S(n,k). Each list{j} is a partition of {1:n} having
% exactly K non-empty subsets.
m = n-k+1;
% L is a temporary buffer, L(kappa) stores partition for nu-elements
% nu will be defined later (see line #162)
L = cell(m,1);
% Initialize single partition
for j=1:m
L{j} = {{elements(1:j)}};
end
% Compute the array of Stirling numbers
[trash S] = Stirling2nd(n, k);
% Derecursive loops
for kappa=2:k
L{1} = {num2cell(elements(1:kappa))};
for j=2:m
nu = j + kappa - 1;
% Allocate
list = cell(S(nu,kappa), 1);
pos = 0;
lp = L{j};
for i=1:size(lp,1)
% augmented insertion
part_i = insert(lp{i}, nu, 2, elements);
list(pos+(1:size(part_i,1))) = part_i;
pos = pos + size(part_i,1);
end
lp = L{j-1};
for i=1:size(lp,1)
% same-size insertion
part_i = insert(lp{i}, nu, 0, elements);
list(pos+(1:size(part_i,1))) = part_i;
pos = pos + size(part_i,1);
end
% Assign the result
L{j} = list;
end % j-loop
end % kappa-loop
% Final result found in the last position of the buffer
list = L{m};
end % partk
% Create a new list of partions from one partition of {1,2,...n-1} and {n}
function part_i = insert(part, n, flag, elements)
% flag = 1, perform all possible insertions
% = 0, insertion that keeps constant size only
% = 2, insertion that increase by 1 the size only
l = size(part,2);
if flag == 0
m = l;
elseif flag == 2
m = 1;
else % flag == 1
m = l+1;
end
en = elements(n);
% Allocate and pre-filled
part_i = cell(m,1);
if flag<=1
[part_i{1:l}] = deal(part);
% Insert N into each individual existing subset
for j = 1:l
part_i{j}{j} = [part_i{j}{j} en];
end
end
% insert {N} as standalone subset
if flag>=1
part_i{m} = [part {en}];
end
end % insert
function [S SA] = Stirling2nd(n, k)
% S = Stirling2nd(N,K)
% N and K are integers
% Compute the Stirling's number of the second kind.
% It is the number of all possible partitions of the set {1:N}, where each
% (partition) has exactly K non-empty subsets.
%
% [S SA] = Stirling2nd(N,K) return a (N x K) array of all Stirling's
% numbers of the second kind of S(i,j) with i<=N, j<=min(K,i).
%
% Author: Bruno Luong <brunoluong@yahoo.com>
% History
% Original: 17-May-2009
% Last update: 18-May-2009, cosmetic changes
k=double(k);
n=double(n);
if k==0
if n==0
S = 1;
else
S = 0;
end
SA = zeros(n,0);
return
end
SA = nan(n,k);
SA(:,1) = 1;
SA(sub2ind(size(SA),1:k,1:k)) = 1;
for i=2:n
%for j=max(2,(i+k)-n):min(i-1,k) % ... % recursive path
for j=2:min(i-1,k)
SA(i,j) = SA(i-1,j-1) + j*SA(i-1,j);
end
end
S = SA(n,k);
end

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!