我感兴趣的是将多个向量写入文件,使得每个向量在文件中形成一行,并在生成后立即写入文件。向量的元素需要用单个空格分隔,我不想在向量中包含{ }
个括号。基本上,我想模仿C的fprintf("file", "%f %f %f\n")
功能。
这就是我所拥有的。有没有更好的方法呢?
st1 = OpenWrite["C:\\junk\\mu.out", FormatType -> OutputForm];
vt = Table[
v = RandomReal[{0, 1}, 5];
For[j = 1, j <= Length[v], j++,
WriteString[
st1,
SequenceForm[NumberForm[v[[j]], ExponentFunction -> (Null &)],
" "]
]
];
Write[st1, ""];
v,
{200}
];
In[3]:= Close[st1]
Out[3]= "C:\\junk\\mu.out"
基于精彩的Riffle功能,礼貌Arnoud和Mr. Wizard,我在下面修改了它:
WriteVector[stream_, vector_] :=
Apply[WriteString[stream, ##, "\n"] &,
Riffle[Map[NumberForm[#, ExponentFunction -> (Null &)] &, vector],
" "]
]
答案 0 :(得分:10)
也许这个?
WriteVector[stream_, vector_] :=
WriteString[stream, ##, "\n"] & @@ Riffle[vector, " "]
和
fname = "c:\\users\\arnoudb\\test.out";
然后:
Do[WriteVector[fname, RandomReal[{0, 1}, 5]],{10}]
并检查:
FilePrint[fname]
完成后关闭流:
Close[fname]