Fortran Coder

标题: fortran将txt文件中的一列数据赋值给一维数组 [打印本页]

作者: yangpeinian    时间: 2020-5-4 00:58
标题: fortran将txt文件中的一列数据赋值给一维数组
本帖最后由 yangpeinian 于 2020-5-15 10:47 编辑

问题已经解决了,谢谢各位!
作者: necrohan    时间: 2020-5-4 08:53
传数据文件
作者: yangpeinian    时间: 2020-5-4 09:46
necrohan 发表于 2020-5-4 08:53
传数据文件

-3.0326800e+00
  -3.0303801e+00
  -3.0281079e+00
  -3.0258633e+00
  -3.0236461e+00
  -3.0214563e+00
  -3.0192937e+00
  -3.0171582e+00
  -3.0150497e+00
  -3.0129681e+00
  -3.0109133e+00
  -3.0088851e+00
  -3.0068835e+00
  -3.0049084e+00
  -3.0029595e+00
  -3.0010369e+00
  -2.9991404e+00
  -2.9972699e+00
  -2.9954252e+00
  -2.9936063e+00
  -2.9918131e+00
  -2.9900453e+00
  -2.9883031e+00
  -2.9865861e+00
  -2.9848943e+00
  -2.9832276e+00
  -2.9815859e+00
  -2.9799691e+00
  -2.9783770e+00
  -2.9768095e+00
  -2.9752666e+00
  -2.9737480e+00
  -2.9722538e+00
  -2.9707838e+00
  -2.9693378e+00
  -2.9679158e+00
  -2.9665176e+00
  -2.9651431e+00
  -2.9637923e+00
  -2.9624650e+00
  -2.9611611e+00
  -2.9598805e+00
  -2.9586230e+00
  -2.9573886e+00
  -2.9561771e+00
  -2.9549885e+00
  -2.9538226e+00
  -2.9526793e+00
  -2.9515585e+00
  -2.9504601e+00
  -2.9493839e+00
  -2.9483299e+00
  -2.9472979e+00
  -2.9462879e+00
  -2.9452997e+00
  -2.9443332e+00
  -2.9433883e+00
  -2.9424648e+00
  -2.9415628e+00
  -2.9406819e+00
  -2.9398223e+00
  -2.9389836e+00
  -2.9381659e+00
  -2.9373690e+00
  -2.9365927e+00
  -2.9358370e+00
  -2.9351018e+00
  -2.9343870e+00
  -2.9336924e+00
  -2.9330179e+00
  -2.9323634e+00
  -2.9317289e+00
  -2.9311141e+00
  -2.9305190e+00
  -2.9299434e+00
  -2.9293873e+00
  -2.9288506e+00
  -2.9283331e+00
  -2.9278346e+00
  -2.9273552e+00
  -2.9268947e+00
  -2.9264529e+00
.
.
.
数据文件是这样一列7001行的数据
作者: vvt    时间: 2020-5-4 10:02
语法和逻辑上都是正常的。
作者: yangpeinian    时间: 2020-5-4 10:09
vvt 发表于 2020-5-4 10:02
语法和逻辑上都是正常的。

fortran运行后结果显示的波形是这样的

7fd68be13c8d6c81b4870f347ef742c.png (14.36 KB, 下载次数: 478)

这是程序运行后得到的数组算出来的波形

这是程序运行后得到的数组算出来的波形

作者: yangpeinian    时间: 2020-5-4 10:10
但是我想得到的数据波形要是这样的,不知道哪里出了问题

1fbe24c38ad87dbbf11367592e9dbbf.png (13.9 KB, 下载次数: 446)

1fbe24c38ad87dbbf11367592e9dbbf.png

作者: yangpeinian    时间: 2020-5-4 10:11
vvt 发表于 2020-5-4 10:02
语法和逻辑上都是正常的。

好的,谢谢您!
作者: vvt    时间: 2020-5-4 11:17
你可以把数据文件打包上传上来~
作者: yangpeinian    时间: 2020-5-4 14:58
vvt 发表于 2020-5-4 11:17
你可以把数据文件打包上传上来~

感谢大哥,文件已上传,请指教。

single.txt

123.06 KB, 下载次数: 3

需要赋值的txt文件


作者: vvt    时间: 2020-5-4 15:09
我试了一下,读出来的数据画图如你给出的图片2一样。

那么这张图,是如何得到的呢?


作者: yangpeinian    时间: 2020-5-4 16:00
vvt 发表于 2020-5-4 15:09
我试了一下,读出来的数据画图如你给出的图片2一样。

那么这张图,是如何得到的呢?

首先表示感谢您的有效回复。这个是我把文件中的数据赋值给一个一维数组,然后让这个数组是声场计算中的声源。计算后提取声源处的波形,就得到是第一幅图的波形。图1和图2的起跳点大概一致,有没有可能是数据计算的有效位数问题?但是我定义的是real(8),精度应该够吧
作者: yangpeinian    时间: 2020-5-4 16:02
vvt 发表于 2020-5-4 15:09
我试了一下,读出来的数据画图如你给出的图片2一样。

那么这张图,是如何得到的呢?

所以可以肯定的是,数据赋值应该没有问题。但是在计算过程中可能有什么有效位数的问题。
作者: vvt    时间: 2020-5-4 17:09
这需要你提供计算过程的代码,相关逻辑对应的公式,才能判断。
作者: yangpeinian    时间: 2020-5-4 18:40
本帖最后由 yangpeinian 于 2020-5-15 10:45 编辑
vvt 发表于 2020-5-4 17:09
这需要你提供计算过程的代码,相关逻辑对应的公式,才能判断。

麻烦请指教!不胜感激!

作者: yangpeinian    时间: 2020-5-4 18:48
vvt 发表于 2020-5-4 17:09
这需要你提供计算过程的代码,相关逻辑对应的公式,才能判断。

程序是在原来有限差分的基础上改的。之前的程序声源直接是一个声源函数,现在的是把声源波形的txt文件数据赋值,设为新的声源。程序可能不好看懂,模型就是包括轴向和径向两个方向的声场计算,需要得到不同时刻不同位置的跟声场相关的物理量。总之就是时间循环里嵌套了一个轴向网格循环,里面再嵌套了一个径向网格循环。
作者: necrohan    时间: 2020-5-7 16:11
对于不能完整贴源代码的,建议楼主自己调试:删掉里面不相关的部分,只保留有问题的部分,找到问题再去改完整的程序。
作者: yangpeinian    时间: 2020-5-15 10:37
necrohan 发表于 2020-5-7 16:11
对于不能完整贴源代码的,建议楼主自己调试:删掉里面不相关的部分,只保留有问题的部分,找到问题再去改完 ...

好的,问题已解决,感谢!
作者: fcode    时间: 2020-5-15 22:39
问题解决就解决了,干嘛还把帖子内容清空了。。。。真是无法理解。




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2