Fortran Coder

楼主: 开颜儿
打印 上一主题 下一主题

[输入输出] 复数数据读取

[复制链接]

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
11#
发表于 2014-5-23 15:50:08 | 只看该作者
开颜儿 发表于 2014-5-23 15:39
你好,我试了一下您帮助我的代码,但是只读进去第一行额,请问我是哪里还不对吗
+,-号问题可以这样吗read ...

第一,5000个数据绝对不会太大。实际上这方面 Fortran 没有任何限定。
第二,如何读,这个问题,与数据是什么格式是强烈相关的。必须根据数据格式来设定读取方式!
第三,你给出的截图里没有实部为复数的例子,截图里我也看不到空格。所以我不能保证写的代码适合你的文件格式。
第四,请上传你的数据文件。(通过附件),这样别人才能更好的了解你的文件格式。
第五,http://fcode.cn/bbs/thread-167-1-2.html 这是通用的方式。对文件格式的依赖稍微小一些。

10

帖子

1

主题

0

精华

入门

F 币
66 元
贡献
38 点
12#
 楼主| 发表于 2014-5-23 15:55:09 | 只看该作者
vvt 发表于 2014-5-23 15:50
第一,5000个数据绝对不会太大。实际上这方面 Fortran 没有任何限定。
第二,如何读,这个问题,与数据是 ...

您好,谢谢您细心解答,我本来想发附件但是没找到发附件的选项
一下是一部分实部为负数的数据,刚刚用您给的那段代码,用了只能读出一行,我把ra,rb改为数组就读不了了,您发的链接看到过,可是不是很理解,那是矩阵,还是有点绕~~


0.168498555149043 + 0.276067038449761i
0.154812932582301 + 0.285514569720378i
0.140858380364344 + 0.294150595276887i
0.126697766288374 + 0.301979685851922i
0.112392118453205 + 0.309011250829115i
0.0980002709338183 + 0.315259216708515i
0.0835798130652834 + 0.320741236076685i
0.0691850205442571 + 0.325479186653940i
0.0548688371782823 + 0.329498069947556i
0.0406801581962225 + 0.332826529070168i
0.0266666059557724 + 0.335495739649627i
0.0128711409958803 + 0.337539848538019i
-0.000664691868587921 + 0.338995006613358i
-0.0139041623260204 + 0.339899535449638i
-0.0268119757007104 + 0.340293233682862i
-0.0393576622179331 + 0.340217289896186i
-0.0515120945860373 + 0.339713863520097i
-0.0632508529751592 + 0.338825763144346i
-0.0745513590357782 + 0.337596211031652i
-0.0853937827702436 + 0.336068576873081i
-0.0957626197768898 + 0.334285790527840i
-0.105643062724805 + 0.332290588675422i
-0.115023579561776 + 0.330124869066612i
-0.123894674873668 + 0.327829616029596i
-0.132249359143705 + 0.325444508889037i
-0.140081901144522 + 0.323007996776731i
-0.147388622005834 + 0.320556836153429i
-0.154166984169863 + 0.318126128031745i
-0.160416032641633 + 0.315748939080135i
-0.166135494086085 + 0.313456407223829i
-0.171326220609747 + 0.311277370890999i
-0.175989310241861 + 0.309238533043761i
-0.180126563646411 + 0.307364096559746i
-0.183740611282076 + 0.305675513297978i
-0.186833105174277 + 0.304192177135428i
-0.189405871519539 + 0.302930781416402i
-0.191462055062188 + 0.301904608775793i
-0.193002121024443 + 0.301125417814652i
-0.194028280621890 + 0.300601164792191i
-0.194540868541457 + 0.300337763871319i
-0.194540868541457 + 0.300337763871319i
-0.194028280621890 + 0.300601164792191i
-0.193002121024443 + 0.301125417814652i
-0.191462055062188 + 0.301904608775793i
-0.189405871519539 + 0.302930781416402i
-0.186833105174277 + 0.304192177135428i
-0.183740611282076 + 0.305675513297978i
-0.180126563646411 + 0.307364096559746i
-0.175989310241861 + 0.309238533043761i
-0.171326220609747 + 0.311277370890999i
-0.166135494086085 + 0.313456407223829i
-0.160416032641633 + 0.315748939080135i
-0.154166984169863 + 0.318126128031745i
-0.147388622005834 + 0.320556836153429i
-0.140081901144522 + 0.323007996776731i
-0.132249359143705 + 0.325444508889037i
-0.123894674873668 + 0.327829616029596i
-0.115023579561776 + 0.330124869066612i
-0.105643062724805 + 0.332290588675422i
-0.0957626197768898 + 0.334285790527840i
-0.0853937827702436 + 0.336068576873081i
-0.0745513590357782 + 0.337596211031652i
-0.0632508529751592 + 0.338825763144346i
-0.0515120945860373 + 0.339713863520097i
-0.0393576622179331 + 0.340217289896186i
-0.0268119757007104 + 0.340293233682862i
-0.0139041623260204 + 0.339899535449638i
-0.000664691868587921 + 0.338995006613358i
0.0128711409958803 + 0.337539848538019i
0.0266666059557724 + 0.335495739649627i
0.0406801581962225 + 0.332826529070168i
0.0548688371782823 + 0.329498069947556i
0.0691850205442571 + 0.325479186653940i
0.0835798130652834 + 0.320741236076685i
0.0980002709338183 + 0.315259216708515i
0.112392118453205 + 0.309011250829115i
0.126697766288374 + 0.301979685851922i
0.140858380364344 + 0.294150595276887i
0.154812932582301 + 0.285514569720378i
0.168498555149043 + 0.276067038449761i
0.181852197834198 + 0.265807541397222i
0.194808847444343 + 0.254741415819196i
0.207304203781942 + 0.242878163066414i
0.219272851557902 + 0.230233451811956i
0.230650158786638 + 0.216827954384258i
0.241372778112667 + 0.202687052508943i
0.251377867677251 + 0.187842335763859i
0.260604558671605 + 0.172330358641034i
0.268993732272969 + 0.156193638856896i
0.276489506640922 + 0.139478618538929i
0.272952349990854 + 0.147691807216961i
0.264929097870248 + 0.164295548782030i
0.256018477407206 + 0.180291192117993i
0.246278333434105 + 0.195632833499393i
0.235769178216912 + 0.210279438547104i
0.224553860076528 + 0.224195003014183i
0.212695891902696 + 0.237350084411801i
0.200261041585475 + 0.249719366813879i
0.187314792971321 + 0.261284041141774i
0.173923966861790 + 0.272029714603663i
0.160153607824835 + 0.281948621757222i
0.146069880920866 + 0.291036863450138i
0.131736567122595 + 0.299296564131591i
0.117217438775614 + 0.306733883938509i
0.102573691889678 + 0.313360153939774i
0.0878650805938788 + 0.319190823875815i
0.0731487569887380 + 0.324245618745600i
0.0584799718177155 + 0.328547901887883i
0.0439106030477706 + 0.332124790709352i
0.0294906031973153 + 0.335006391085132i
0.0152665740548571 + 0.337225852281043i
0.00128129984010199 + 0.338818987720168i
-0.0124246338879546 + 0.339823706760283i
-0.0258138704358838 + 0.340279892643348i
-0.0388533249896880 + 0.340229041235461i
-0.0515120945860373 + 0.339713863520097i
-0.0637631155815280 + 0.338777994266568i
-0.0755816945105867 + 0.337465740742329i
-0.0869467774060008 + 0.335821683866169i
-0.0978404627812447 + 0.333890351620619i
-0.108246803929154 + 0.331716138169474i
-0.118153693265739 + 0.329342642222341i
-0.127549573382263 + 0.326813114589017i
-0.136426994307252 + 0.324169325374717i
-0.144779647076737 + 0.321452017428650i
-0.152603493230458 + 0.318700338883112i
-0.159895846769260 + 0.315951873681833i
-0.166655139404871 + 0.313242511676439i
-0.172881674305924 + 0.310605902148380i
-0.178576057669999 + 0.308073854628317i
-0.183740611282076 + 0.305675513297978i
-0.188377179256134 + 0.303438136073902i
-0.192488874149888 + 0.301386105907768i
-0.196078251723432 + 0.299541632880672i
-0.199148101735228 + 0.297924224931854i
-0.201701595006790 + 0.296550449008420i
-0.203740860035573 + 0.295434569423265i
-0.205268769809604 + 0.294587480237269i
-0.206285983544484 + 0.294018252347660i
-0.206794357521733 + 0.293732180969508i
-0.206794357521733 + 0.293732180969508i
-0.206285983544484 + 0.294018252347660i
-0.205268769809604 + 0.294587480237269i
-0.203740860035573 + 0.295434569423265i
-0.201701595006790 + 0.296550449008420i
-0.199148101735228 + 0.297924224931854i
-0.196078251723432 + 0.299541632880672i
-0.192488874149888 + 0.301386105907768i
-0.188377179256134 + 0.303438136073902i
-0.183740611282076 + 0.305675513297978i
-0.178576057669999 + 0.308073854628317i
-0.172881674305924 + 0.310605902148380i
-0.166655139404871 + 0.313242511676439i
-0.159895846769260 + 0.315951873681833i
-0.152603493230458 + 0.318700338883112i
-0.144779647076737 + 0.321452017428650i
-0.136426994307252 + 0.324169325374717i
-0.127549573382263 + 0.326813114589017i
-0.118153693265739 + 0.329342642222341i
-0.108246803929154 + 0.331716138169474i
-0.0978404627812447 + 0.333890351620619i
-0.0869467774060008 + 0.335821683866169i
-0.0755816945105867 + 0.337465740742329i
-0.0637631155815280 + 0.338777994266568i
-0.0515120945860373 + 0.339713863520097i
-0.0388533249896880 + 0.340229041235461i
-0.0258138704358838 + 0.340279892643348i
-0.0124246338879546 + 0.339823706760283i

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
13#
发表于 2014-5-23 15:55:38 | 只看该作者
如果你的数据格式是:
-1.234567890123 +9.876543210123
那就非常简单了。
因为默认 * 的要求是:
1.正负号,与数据在一起。(中间没有空格)
2.不同数据间(实部与虚部之间),有空格,或逗号,或TAB
3.没有虚部单位 i
然而,你的数据格式,全部不满足这一要求。
所以,你分别需要对应做如下调整:
1.单独判断正负号。(至少虚部需要,实部是否需要,看你的数据里实部的符号与实部是否有空格)
2.单独判断虚部单位。(虚部与虚部单位间没有空格)

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
14#
发表于 2014-5-23 16:01:42 | 只看该作者
OK,看到你的数据了。
你的数据真是太变态了。
0.0980002709338183 + 0.315259216708515i
-0.000664691868587921 + 0.338995006613358i

这说明,至少实部的位数,是不一样的。上面随便选了两行,第一行实部是 f18.16,第二行却是 f21.19。

我建议你使用 http://fcode.cn/bbs/thread-167-1-2.html 这里的代码,把 n 取为 1 既可。

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
15#
发表于 2014-5-23 16:10:04 | 只看该作者
[Fortran] 纯文本查看 复制代码
Program www_fcode_cn
  Implicit None  
  Integer , parameter :: N = 168
  complex :: cmp(N) , ReadComplex
  integer i
  Open( 12 , File = "t.dat" )
  Do i = 1 , N
    cmp(i) = ReadComplex( 12 )
    write( * , * ) cmp(i)
  End Do
  Close( 12 )
End Program www_fcode_cn  

complex Function ReadComplex( u )
  Integer , Intent( IN ) :: u
  character( len = 64 ) :: cImag , cTemp
  character( len = 1 ) :: cSign
  real :: rReal , tImag , tSign
  integer :: k
  read( u , * ) rReal , cSign , cImag
  tSign = 1.0
  if ( cSign == '-' ) tSign = -1.0
  cTemp = cImag
  k = Len_Trim(cTemp)
  cTemp(k:k) = ''
  read( cTemp , * ) tImag
  ReadComplex = cmplx(rReal , tSign * tImag )
End Function ReadComplex

10

帖子

1

主题

0

精华

入门

F 币
66 元
贡献
38 点
16#
 楼主| 发表于 2014-5-23 16:19:19 | 只看该作者
vvt 发表于 2014-5-23 16:10
[mw_shl_code=fortran,true]Program www_fcode_cn
  Implicit None  
  Integer , parameter :: N = 168

非常感谢,用您的代码,终于读出来了~~ 纠结了两天了,终于有了答案,的确我还是新手还得好好看看~~ 太谢谢您了。

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
17#
发表于 2014-5-23 16:20:50 | 只看该作者
开颜儿 发表于 2014-5-23 16:18
非常感谢,用您的代码,终于读出来了~~ 纠结了两天了,终于有了答案,的确我还是新手还得好好看看~~ 太谢 ...

实际上,我的代码与之前给你的地址是一样的。只不过 N=1 而已。

你一定要学会如何根据别人的代码来修改以符合自己的需求。代码是万变的,去找完全符合自己需要的代码简直太困难了。

10

帖子

1

主题

0

精华

入门

F 币
66 元
贡献
38 点
18#
 楼主| 发表于 2014-5-23 16:56:01 | 只看该作者
vvt 发表于 2014-5-23 16:20
实际上,我的代码与之前给你的地址是一样的。只不过 N=1 而已。

你一定要学会如何根据别人的代码来修改 ...

是阿~ 首先得看懂才能会用会变,嘻嘻~我会努力的,您太厉害了~~

18

帖子

3

主题

0

精华

熟手

F 币
116 元
贡献
73 点
19#
发表于 2014-5-23 18:02:49 | 只看该作者
我的提问被反复拿出来,难道这就是所谓的标答?
PS:LZ,你何不尝试下用2进制读写文件呢?我的接口中,txt只是用来好看的,真正的数据传输都是2进制的,通过option来处理。

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
20#
发表于 2014-5-23 18:40:57 | 只看该作者
山大克鲁士 发表于 2014-5-23 18:02
我的提问被反复拿出来,难道这就是所谓的标答?
PS:LZ,你何不尝试下用2进制读写文件呢?我的接口中,txt ...

回答过的问题,再回答不是浪费时间和精力么?拿出来引用是最好的了
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-24 02:08

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表