我对Mathematica的导出结果有一个问题。必须以特殊形式导出两个矩阵A和B. 这两个代码列出了从Maple导出的数据。 使用wordpad打开的导出文件看起来像列(附加文件)非常重要。
拜托,如果您已经检查过它正在工作,请给我回答,谢谢!与文件相比,您可以查看答案。
代码在这里
矩阵A和B,其中包含Maple和导出文件中的代码
http://www.2shared.com/file/49wW8Z0-/EXAMPLE_EXPORT_MAPLE_FINAL.html
我也会在这里向所有人展示简单
代码1)
A := Matrix(2, 2, {(1, 1) = (455200000000/6133413)*w(1), (1, 2) = -(1792000000000/116534847)*w(1), (2, 1) = (455200000000/6133413)*w(2), (2, 2) = -(1792000000000/116534847)*w(2)})
precision := double: writeto(`Aexport.for`):
for i from 1 to 2 do:for j from 1 to 2 do:
if A[i,j]<>0 then codegen[fortran]([A00[i,j]=A[i,j]],optimized):
fi:od:od:writeto(terminal):
代码2)
B := Matrix(2, 2, {(1, 1) = 6436781.609, (1, 2) = 0, (2, 1) = 0, (2, 2) = 3862068.966})
writeto(Bexport);
for i to 2 do
for j to 2 do
printf("%016.15E\n", B[i, j])
end do:
end do:
writeto(terminal)
答案 0 :(得分:1)
这只是(B)部分的翻译:
matrix = {{6436781.609, 0}, {0, 3862068.966}}
Export["Bexport", Map[FortranForm, N@Flatten[matrix]], "Table"]
请测试一下,让我知道它是否适合您。
与Maple版本相比的差异:E
被写为小写,输出的数字位数不固定(但正如您所见,所有有效数字是保留)。这些差异会导致您的申请出现问题吗?
答案 1 :(得分:1)
我相信这可以满足您对矩阵B的要求:
b = {{6436781.609, 0}, {0, 3862068.966}}
bformatted =
NumberForm[
Flatten@b,
{16, 15},
NumberFormat -> (Row[{#, "E+", StringTake["00" <> #3, -2]}] &)
];
bstring =
StringReplace[
ToString@bformatted,
{"{"|"}"|" " -> "", "," -> "\n"}
];
WriteString["Bexport.dat", bstring, "\n"]
Close["Bexport.dat"]