代码之家  ›  专栏  ›  技术社区  ›  Emil

N维数组的实际应用,其中(N>3)

  •  5
  • Emil  · 技术社区  · 14 年前

    我在过去的8年里一直在编程,现在我想知道是否有N维数组的实际应用,其中N>3。我只能可视化小于或等于3的数据结构尺寸。有有人在任何程序中使用了超过3个维度吗?N-D阵列是否有超越3d的实际用途?如果是,请邮寄一些样品。

    4 回复  |  直到 14 年前
        1
  •  2
  •   msw    14 年前

    我记得唯一像样的例子是1982年的文本 Oh! Pascal! 这让你知道在我的经历中这是多么罕见。

    例如一个库存系统,牛仔裤可以通过

     inventory[sex][size][length][color][fit] = number_received
    

    只是有点做作。用这样的方式构造数据库是没有问题的,但它看起来确实像代码一样有趣。

        2
  •  3
  •   Anycorn    14 年前

    以物理学中张量很常见的几乎所有东西为例,例如广义相对论、计算化学、量子物理学。

    http://en.wikipedia.org/wiki/Tensor#Applications

    例如,秩为4的张量是常见的。

    http://www.oonumerics.org/FTensor/FTensor.pdf

    http://mpqc.svn.sourceforge.net/viewvc/mpqc/trunk/mpqc/src/lib/chemistry/qc/lmp2/lmp2.cc?revision=9342&view=markup&pathrev=9492

    333     double
    334     LMP2::compute_ecorr_lmp2()
    335     {
    336     Timer tim("ecorr");
    337     
    338     sma2::Index r("r"), s("s");
    339     sma2::Array<0> ecorr;
    340     double ecorr_lmp2 = 0.0;
    341     for (my_occ_pairs_t::const_iterator iter = my_occ_pairs_.begin();
    342     iter != my_occ_pairs_.end();
    343     iter++) {
    344     sma2::Index i(iter->first-nfzc_);
    345     sma2::Index j(iter->second-nfzc_);
    346     if (j.value() > i.value()) continue;
    347     double f;
    348     if (i.value() != j.value()) f = 2.0;
    349     else f = 1.0;
    350     ecorr.zero();
    351     ecorr() += f * 2.0 * K_2occ_(i,j,r,s) * T_local_(i,j,r,s);
    352     ecorr() -= f * K_2occ_(i,j,s,r) * T_local_(i,j,r,s);
    353     ecorr_lmp2 += ecorr.value();
    354     }
    355     
    356     msg_->sum(ecorr_lmp2);
    357     
    358     return ecorr_lmp2;
    359     } 
    
        3
  •  2
  •   Forrest Voight    14 年前

    最明显的例子是体素空间列表。。。3+1=4个尺寸:)

        4
  •  2
  •   supercat    14 年前