phliply 发表于 2009-5-25 14:23

Matlab求助~矩阵函数赋值

遇到一个问题,大家帮忙解决下,谢了哈!!
有一个矩阵A,有12列495行;
请为该矩阵赋值,赋值内容为8个1和4个0共12个数的随机排列组合(共495种不同排法);
请问如何通过函数给该矩阵赋值?
紧急求助,万分感谢!!

xiuhuwang 发表于 2009-5-25 15:15

回复 楼主 phliply 的帖子

这个有很笨的方法,就是循环搞定,MATLAB中有没有其他的好方法,我还不知道
循环就是把所有的情况列出,这个没啥难度吧

ChaChing 发表于 2009-5-25 21:36

P = perms(v) where v is a row vector of length n, creates a matrix whose rows consist of all possible permutations of the n elements of v. The matrix P contains n! rows and n columns.
perms is only practical when n is less than 8 or 9.

phliply 发表于 2009-5-26 13:34

回复 板凳 ChaChing 的帖子

谢谢~

不过我试过 perms(a)函数,一旦a大于11就会出现问题:

??? Out of memory. Type HELP MEMORY for your options.

不知道是不是数据溢出?

bainhome 发表于 2013-2-16 14:50

貌似直接用perms做排列不能解决,可以用nchoosek对1:12做12选4形成下标索引,定义一个与前述矩阵同行数、列数12的全1阵,再将前面计算出的索引赋值为0即可。function choose_12_to_4
clc
B=nchoosek(1:12,4);
A=ones(size(B,1),12);
for i=1:size(A,1)
    A(i,B(i,:))=0;
end
页: [1]
查看完整版本: Matlab求助~矩阵函数赋值