声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2112|回复: 5

[编程技巧] 求助:如何将矩阵中的元数枚举出来

[复制链接]
发表于 2006-10-11 14:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
问题描述:如何将一个只包含0、1两个值的矩阵枚举出来,例如:8个开关变量构成一个开关向量,形如[1 0 1 1 0 0 1 0],1代表开,0代表关,我如何将这8开关变量的组合形式枚举出来,构成一个矩阵?
希望各位大侠能不吝赐教,先在此谢过了!
回复
分享到:

使用道具 举报

发表于 2006-10-11 17:30 | 显示全部楼层
这个问题倒是满好玩儿的!
给个做法:
8个数字四个零四个一,相当于把其中的四个零或者四个一在1到8这8个位置上排列,做个8取四的组合即可,如下是所有组合:
  1. nchoosek([1:8],4)
复制代码

一共70种做法。

[ 本帖最后由 bainhome 于 2006-10-11 17:31 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2006-10-11 23:10 | 显示全部楼层

谢谢!不愧是大侠啊!

 楼主| 发表于 2006-10-13 19:23 | 显示全部楼层

nchoosek([1:8],4)求得的不是我想得到啊

首先感谢2楼大侠的指点,可是nchoosek([1:8],4)求得的矩阵不是我所需要的,这个函数求得的是枚举出了[1 2 3 4 5 6 7 8]向量中任意四个元数的组合,并按照原顺序排列。请大侠能否再给出一个比较好的答案?
  本人愚钝,没能在大侠所给的函数指引下找到合适的方法,敬请大侠再次赐教
发表于 2006-10-13 20:14 | 显示全部楼层
都到这一步了,你居然还能做不出答案...
  1. function fff
  2. clc
  3. B=nchoosek(1:8,4);
  4. A=zeros(size(nchoosek(1:8,4),1),8);
  5. for i=1:length(A)
  6.     A(i,B(i,:))=1;
  7. end
  8. A
复制代码

=========
运行结果:
=========
  1. A =
  2.      1     1     1     1     0     0     0     0
  3.      1     1     1     0     1     0     0     0
  4.      1     1     1     0     0     1     0     0
  5.      1     1     1     0     0     0     1     0
  6.      1     1     1     0     0     0     0     1
  7.      1     1     0     1     1     0     0     0
  8.      1     1     0     1     0     1     0     0
  9.      1     1     0     1     0     0     1     0
  10.      1     1     0     1     0     0     0     1
  11.      1     1     0     0     1     1     0     0
  12.      1     1     0     0     1     0     1     0
  13.      1     1     0     0     1     0     0     1
  14.      1     1     0     0     0     1     1     0
  15.      1     1     0     0     0     1     0     1
  16.      1     1     0     0     0     0     1     1
  17.      1     0     1     1     1     0     0     0
  18.      1     0     1     1     0     1     0     0
  19.      1     0     1     1     0     0     1     0
  20.      1     0     1     1     0     0     0     1
  21.      1     0     1     0     1     1     0     0
  22.      1     0     1     0     1     0     1     0
  23.      1     0     1     0     1     0     0     1
  24.      1     0     1     0     0     1     1     0
  25.      1     0     1     0     0     1     0     1
  26.      1     0     1     0     0     0     1     1
  27.      1     0     0     1     1     1     0     0
  28.      1     0     0     1     1     0     1     0
  29.      1     0     0     1     1     0     0     1
  30.      1     0     0     1     0     1     1     0
  31.      1     0     0     1     0     1     0     1
  32.      1     0     0     1     0     0     1     1
  33.      1     0     0     0     1     1     1     0
  34.      1     0     0     0     1     1     0     1
  35.      1     0     0     0     1     0     1     1
  36.      1     0     0     0     0     1     1     1
  37.      0     1     1     1     1     0     0     0
  38.      0     1     1     1     0     1     0     0
  39.      0     1     1     1     0     0     1     0
  40.      0     1     1     1     0     0     0     1
  41.      0     1     1     0     1     1     0     0
  42.      0     1     1     0     1     0     1     0
  43.      0     1     1     0     1     0     0     1
  44.      0     1     1     0     0     1     1     0
  45.      0     1     1     0     0     1     0     1
  46.      0     1     1     0     0     0     1     1
  47.      0     1     0     1     1     1     0     0
  48.      0     1     0     1     1     0     1     0
  49.      0     1     0     1     1     0     0     1
  50.      0     1     0     1     0     1     1     0
  51.      0     1     0     1     0     1     0     1
  52.      0     1     0     1     0     0     1     1
  53.      0     1     0     0     1     1     1     0
  54.      0     1     0     0     1     1     0     1
  55.      0     1     0     0     1     0     1     1
  56.      0     1     0     0     0     1     1     1
  57.      0     0     1     1     1     1     0     0
  58.      0     0     1     1     1     0     1     0
  59.      0     0     1     1     1     0     0     1
  60.      0     0     1     1     0     1     1     0
  61.      0     0     1     1     0     1     0     1
  62.      0     0     1     1     0     0     1     1
  63.      0     0     1     0     1     1     1     0
  64.      0     0     1     0     1     1     0     1
  65.      0     0     1     0     1     0     1     1
  66.      0     0     1     0     0     1     1     1
  67.      0     0     0     1     1     1     1     0
  68.      0     0     0     1     1     1     0     1
  69.      0     0     0     1     1     0     1     1
  70.      0     0     0     1     0     1     1     1
  71.      0     0     0     0     1     1     1     1
复制代码

评分

1

查看全部评分

 楼主| 发表于 2006-10-13 23:01 | 显示全部楼层

受教了,感谢!

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-1 18:08 , Processed in 0.064016 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表