java - 从Java中的矩阵获取所有 vector

标签 java matrix vector

我遇到了一个小问题,我想寻求帮助。 问题是我得到了这个控制矩阵 H。

      0000111111111
H =   0111000111222
      1012012012012

我被要求获取这段代码的所有单词。线性码和分组码理论表明,单词 V 是 H*Vt=0(零) 其中 Vt 转置 V 的单词。

目前我知道有 3^10 = 59049 个可能的词。这是矩阵的大小,它是通过为矩阵的主体 q 在这种情况下 q=3 到列-行的维度获得的。

我的问题是 我不知道如何生成所有 vector (单词),所以 H*Vt = 0。我怎么能在 Java 上做到这一点?使用 13-n vector 与 0,1 和 2 的所有可能组合。我还想知道是否可以在 Java 中使用矩阵。

[0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,1] 
[0,0,0,0,0,0,0,0,0,0,0,1,0]
[0,0,0,0,0,0,0,0,0,0,0,1,1]
.... 
[0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,2] 
[0,0,0,0,0,0,0,0,0,0,0,2,0]
[0,0,0,0,0,0,0,0,0,0,0,2,2]
....
[0,0,1,1,1,1,1,1,1,1,1,1,1]
[0,1,1,1,1,1,1,1,1,1,1,1,1]
[1,1,1,1,1,1,1,1,1,1,1,1,1]
...
[1,1,2,2,2,2,2,2,2,2,2,2,2]
[1,2,2,2,2,2,2,2,2,2,2,2,2]
[2,2,2,2,2,2,2,2,2,2,2,2,2]

非常感谢! 我想以通用方式实现它,我的意思是,不仅针对这个矩阵,而且针对我可以使用的每个矩阵

最佳答案

您正在寻找的基本上是枚举 H 内核中的所有 vector 。为避免重新发明轮子,您需要找到一个支持在有限域上求解线性系统的 Java 线性代数库(排除了大多数流行的 Java 线性代数库)。

我用谷歌搜索“Java 线性代数有限域”并找到了这个库:JLinAlg ,声称支持它。

你所要做的就是为H的内核找到一个基础;之后,枚举就是简单地列出在此基础上的所有线性组合(坐标)。

我会选择 org.jlinalg.LinSysSolver#solutionSpace()方法,它产生一个 AffineSubSpace具有 generatingSystem() 方法,可为您提供所需的基础。

关于java - 从Java中的矩阵获取所有 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30810147/

相关文章:

java - 如果 URI 声明的文件不存在,则创建该文件

r - 如何挑选出矩阵中的特定值 [R]

c++ - 在 C++ 中给定单词的字符串 vector 创建一个短语

c++ - vector 容器的运算符 [] - 返回引用?

java - 编译器认为 Comparable 类型不是 Comparable

javascript - 在 Adob​​e CQ 5.6 中手动安装模块

python - 优化使用 numpy 创建 3d 矩阵

c++ - uBLAS 矩阵清除内存

c++ - std::vector<char> 并获取下一行到定界字符

java - 使用 JDBC 访问 Hive 元数据