【问题标题】:Combinations matrix in matlabmatlab中的组合矩阵
【发布时间】:2017-09-25 21:20:26
【问题描述】:

这段代码

 combinations = dec2base(0:power(2,N*M)-1,2) - '0'

为大小为 N*M 的矩阵生成所有可能的 0 和 1 组合,并将所有这些组合存储在称为组合的矩阵中。我需要知道它是如何工作的,因为我不懂这段代码。谢谢你

【问题讨论】:

  • 如果你想知道dec2base在内部做什么,输入open dec2base然后看看。注意不要修改任何东西。如果让您感到困惑的是其他部分,请在您的问题中说明
  • 谢谢 Luis,我知道 dec2base () 函数是做什么的,例如它假设将整数转换为基数 d,但是如何使用此函数获取和 N 的所有可能组合*M 矩阵使用此代码?换句话说,这个参数是做什么的,什么是“-'0'”?
  • 不,这会创建一个2^(M*N) x (M*N) 矩阵。 - '0'dec2base 的字符输出转换为数字。
  • 谢谢烧杯!

标签: matlab matrix


【解决方案1】:

M = 2N = 3 为例。那么power(2,N*M)-1就是630:power(2,N*M)-1就是向量[0 1 2 ... 63]

dec2base(..., 2) 将这些64 数字转换为基本2,使用字符'0''1' 作为“数字”。每个结果都在一行中,如果需要,用'0' 左填充。所以它给出了64×6 char 矩阵

000000
000001
000010
....
111110
111111

要将这些字符转换为数字,请减去 '0'。这使得0 对应'0'1 对应'1',利用了字符'0''1' 的ASCII 码是连续的这一事实。所以最终的结果就是数值矩阵

0     0     0     0     0     0
0     0     0     0     0     1
0     0     0     0     1     0
....
1     1     1     1     1     0
1     1     1     1     1     1

【讨论】:

    猜你喜欢
    • 2011-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    相关资源
    最近更新 更多