【问题标题】:Making a matrix in a for loop在 for 循环中创建矩阵
【发布时间】:2017-09-12 13:05:19
【问题描述】:

我目前正在使用mathematica,但遇到了一些技术问题。

Rvec[R_] := UnitVector[Length[R], RandomInteger[{1, Length[R]}]]
Fvec[R_] := R - Rvec[R] + Rvec[R]
vec[R_] := Module[{S = Fvec[R]}, If[Count[S, -1] > 0, R, S]]
Loop[R_, n_] := For[i = 1; L = R, i < n + 1, i++, L = vec[L]; Print[L]]

我的想法是我现在有一个循环,它将从一组中的一个条目中随机减去一个数字,并在下一次迭代中将它添加到另一个,但要注意没有条目可以低于零。然后我得到的输出是一组放在一起的结果。

完成后,我想知道如何将整个输出以一个矩阵的形式呈现:

https://i.gyazo.com/a4ef70ba5670fd53003e0ac5ec1e434e.png

我不想有这样的输出,而是希望它以矩阵形式出现,就像将这组输出放在一个更大的集合中,其中包含这些集合作为元素。这将极大地帮助我,因为我将能够操纵和处理整个输出。

【问题讨论】:

  • 我建议不要使用For,而是使用Nest。要在程序循环中收集结果,请查找 Sow/Reap。如果你是初学者,I suggest you forget about the For loop for a while。最后,尽量避免以大写字母开头的名称,因为您可能会与内置符号或包符号发生冲突。
  • 我的意思实际上是NestList,而不是Nest
  • 也许我错过了一些东西,但为什么不把 For 循环变成 Table 呢?

标签: for-loop matrix random wolfram-mathematica


【解决方案1】:

如果您需要通过逐个向量添加矩阵来制作矩阵,您可以这样做:

vector = {1, 2, 3, 4, 5};
matrix = {};   (* Initialize matrix *)
Do[matrix = Append[matrix, vector], 5];   (* Construct matrix by adding line by line*)
MatrixForm[matrix]   (* Print matrix *)

如果我没有正确理解你的问题,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 2015-06-12
    相关资源
    最近更新 更多