asi*_*sim 6 wolfram-mathematica
我感兴趣的是将多个向量写入文件,使得每个向量在文件中形成一行,并在生成后立即写入文件.向量的元素需要用单个空格分隔,我不想包含{ }向量的括号.基本上,我想模仿fprintf("file", "%f %f %f\n")C 的功能.
这就是我所拥有的.有没有更好的方法呢?
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"
Run Code Online (Sandbox Code Playgroud)
基于精彩的Riffle功能,礼貌Arnoud和Mr. Wizard,我在下面修改它如下:
WriteVector[stream_, vector_] :=
Apply[WriteString[stream, ##, "\n"] &,
Riffle[Map[NumberForm[#, ExponentFunction -> (Null &)] &, vector],
" "]
]
Run Code Online (Sandbox Code Playgroud)
Arn*_*ing 10
也许这个?
WriteVector[stream_, vector_] :=
WriteString[stream, ##, "\n"] & @@ Riffle[vector, " "]
Run Code Online (Sandbox Code Playgroud)
和:
fname = "c:\\users\\arnoudb\\test.out";
Run Code Online (Sandbox Code Playgroud)
然后:
Do[WriteVector[fname, RandomReal[{0, 1}, 5]],{10}]
Run Code Online (Sandbox Code Playgroud)
并检查:
FilePrint[fname]
Run Code Online (Sandbox Code Playgroud)
完成后关闭流:
Close[fname]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |