For loop 在for循环中生成矩阵

For loop 在for循环中生成矩阵,for-loop,matrix,random,wolfram-mathematica,For Loop,Matrix,Random,Wolfram Mathematica,我目前在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

我目前在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]]
Rvec[R_]:=UnitVector[Length[R],RandomInteger[{1,Length[R]}]]
Fvec[R_]:=R-Rvec[R]+Rvec[R]
如果[Count[S,-1]>0,R,S]]
循环[R\u,n\u]:=For[i=1;L=R,i
这个想法是,我现在有一个循环,它将从集合中的一个条目中随机减去一个数字,并在下一次迭代中将其添加到另一个条目中,但捕获的是,没有条目可以降到零以下。然后我得到的输出是一组相互叠加的结果

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


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

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

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 *)

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

如果你需要通过一个向量一个向量地相加来生成矩阵,你可以这样做:

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 *)

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

我建议用
Nest
代替
For
。要在过程循环中收集结果,请查找
Sow
/
eaw
。如果你是初学者。最后,尽量避免使用以大写字母开头的名称,因为这样可能会与内置或软件包符号发生冲突。我指的是
NestList
,实际上不是
Nest
。也许我遗漏了一些东西,但为什么不让
For
循环成为
表呢?我建议
Nest
,而不是
For
。要在过程循环中收集结果,请查找
Sow
/
eaw
。如果你是初学者。最后,尽量避免以大写字母开头的名称,因为这样可能会与内置或包符号发生冲突。我指的是
NestList
,实际上不是
Nest
。也许我遗漏了一些东西,但为什么不让
For
循环成为
表呢?