如何生成一组包含n维矩形棱镜中所有整数点的n维向量

时间:2014-11-04 12:28:04

标签: matlab

好的,所以我正在研究与量子混沌有关的问题,我需要做的一件事就是将n维中的单位立方体映射到n维的平行六面体并找到所有的整数点。这个平行六面体的内部。我一直在尝试使用以下方案:

  1. 给定线性映射B和立方体n的维数,我们通过将数字j从0转换为(2 ^ n -1)到它们的二进制表示并将它们转换为向量来找到单位超立方体的角的坐标描述立方体的顶点。
  2. 下一步是将地图B应用于这些向量中的每一个,这给出了一组2 ^ n个向量,用于描述n维中平行六面体顶点的坐标
  3. 现在,我们获取每个坐标方向上任何这些顶点所获得的最大值和最小值,即我的矢量的第一个元素在所有顶点上的最大值可能为4,最小值为-3等这给了我一个n维矩形棱镜,它包含了我的平行六面体和一些额外的不需要的空间。
  4. 我现在在这个边界矩形棱镜中找到所有带有整数坐标的点,在n维
  5. 中描述为矢量
  6. 最后,我将地图B的倒数应用于每个点并扔掉任何系数大于1的点,因为它们必须最初位于我的单位超立方体之外。
  7. 我的问题出现在第4步,我正在努力想出一种在我的矩形超棱镜中生成具有整数坐标的所有向量的方法,这样我就可以动态地改变维数n。理想情况下,我希望能够随意增加n,直到它变得太计算重,但是我在迄今为止尝试过的棱镜中找到所有整数点的每种方法都依赖于n for循环来置换每个元素,因此我需要每次都重写代码。

    所以我想我的问题是这个,有没有办法对其进行编码以便我可以动态更改n?此外,任何关于算法本身的想法的想法将不胜感激:)如果我大量过分复杂的事情,我不会感到惊讶...

    修改 当然,一旦我发布问题,我就会在侧栏中看到一个可爱的小链接,其中已经给出了一个如何执行此操作的聪明方法:Generate a matrix containing all combinations of elements taken from n vectors

    我会暂时放下这个,以防万一有人对这个方法有任何意见,但除此之外(因为我不能投票但我会在这里说出来)Luis Mendo,你是英雄!

0 个答案:

没有答案