随机魔术矩阵产生意外结果

时间:2015-09-28 09:36:03

标签: matlab octave magic-square

我试图在Octave 中创建随机魔方并尝试类似rand(magic(3))的内容,它会产生意想不到的无穷无尽的结果:

 ans(:,:,1,1,2,1,1,1,1) =

 0.894903   0.296415   0.143990
 0.186976   0.305691   0.505485
 0.224823   0.834031   0.285508
 0.336706   0.318158   0.076293 

在尝试rand(magic(4))和5,6,7时......它会发出类似这样的消息

  

错误:对于Octave的索引类型

,内存或维度太大

这种模糊结果的可能原因是什么?

1 个答案:

答案 0 :(得分:2)

你想做什么? magic(3)创建 3 -by- 3 矩阵,其中所有行和列加起来相同的数字。 rand(x)创建一个均匀分布的随机数的 n 维矩阵。例如,如果您拨打y = rand([1,2,3]),您将获得一个均匀分布的数字的 3 维矩阵。 y的维度将与您的输入相匹配,即size(y)应返回[1,2,3],元素数量将为prod(y)。因此rand(magic(3))的元素数应该等于prod(prod(magic(3))) 362880。如果你为rand(magic(4))执行此操作,则元素数量将超过20万亿,这就是内存不足的原因。