如何阅读一个特别结构化数据文件

4视图(30天)
杰克
杰克 2023年2月27日
编辑: 杰克2023年2月27日
我有一个*。5 p文件(从软件WAMIT文件输出,可以通过Matlab读和/或任何文本编辑器),我想读通过Matlab。因为我不能上传一个*。5 p文件在论坛,我把它调整为*。txt文件并附示例文件。
现在,一行这个数据文件将包括19列(相隔一个标签或空间)。然而,输出文件的特定结构“包装”每个数据行包括只有15列,和下一个4行进入一个新行。我在下面的代码来读取数据。
fid = fopen (“test.5p”);
C = cell2mat (textscan (fid,' % % % f % f % f % % % f % f % % % f % f % f % % % f % f % f '));
文件关闭(fid);
但这不会给我我想要的结构,相反,我得到类似于以下的东西。
我怎么能读这些包装线是一个行吗?
蒂娅!
* *编辑:我意识到我犯了一个错误的问题和实际的结构数据文件有点比我想象的更复杂,并附在这里。 我发了一个单独的问题详细描述

接受的答案

Stephen23
Stephen23 2023年2月27日
fid = fopen (“用法”,“rt”);
垫= fscanf (fid,' % f ',19岁,正)。”;
文件关闭(fid);
显示器(垫)
垫= 300×19
-1.0000 1.0000 1.0000 0.0647 0.0303 -0.0016 -0.0446 0.1337 0 0 0 0 0 0 0 -0.0446 0.0154 -1.0000 1.0000 2.0000 0.0461 0.0679 0.0318 -0.0017 -0.0505 0.1375 0 0 0 0 0 0 0 -0.0505 0.0190 -1.0000 1.0000 3.0000 0.0521 0.0649 0.0305 -0.0013 -0.0402 0.1327 0 0 0 0 0 0 0 -0.0402 0.0153 -1.0000 1.0000 4.0000 0.0418 0.0634 0.0301 -0.0010 -0.0314 0.1318 0 0 0 0 0 0 0 -0.0314 0.0115 -1.0000 1.0000 5.0000 0.0327 0.0646 0.0308 -0.0009 -0.0316 0.1329 0 0 0 0 0 0 0 -0.0316 0.0127 -1.0000 1.0000 6.0000 0.0330 0.0672 0.0316 -0.0012 -0.0416 0.1357 0 0 0 0 0 0 0 -0.0416 0.0173 -1.0000 1.0000 7.0000 0.0433 0.0700 0.0326 -0.0017 -0.0533 0.1392 0 0 0 0 0 0 0 -0.0533 0.0217 -1.0000 1.0000 8.0000 0.0550 0.0692 0.0324 -0.0012 -0.0444 0.1379 0 0 0 0 0 0 0 -0.0444 0.0196 -1.0000 1.0000 9.0000 0.0461 0.0722 0.0333 -0.0016 -0.0559 0.1413 0 0 0 0 0 0 0 -0.0559 0.0245 -1.0000 1.0000 10.0000 0.0575 0.0741 0.0349 -0.0021 -0.0650 0.1443 0 0 0 0 0 0 -0.0650 0.0277 0.0663 0
1评论
杰克
杰克 2023年2月27日
谢谢你! @Stephen23 ,我接受了你的答案,因为它与我所想要的。但是,我很抱歉,我在我的问题和错误。 我发了一个单独的问题详细描述 。再次对不起。

登录置评。

更多的答案(2)

1月
1月 2023年2月27日
编辑:1月 2023年2月27日
(fid,味精)= fopen (“test.5p”);
断言(fid > 0,' % s '、味精);
C = fscanf (fid检测器,“% g”、正);%阅读所有在一块
文件关闭(fid);
19岁的C =重塑(C [])”;%重塑之后
1评论
杰克
杰克 2023年2月27日
谢谢你! @Jan !但是,我很抱歉,我在我的问题和错误。我很匆忙,忽视我的文件的结构,只有意识到实际结构比我稍微复杂一点。 我发了一个单独的问题详细描述 。再次对不起。
进一步,我接受了Stephen23的回答,因为它对齐与我记住一点:)

登录置评。


Askic V
Askic V 2023年2月27日
编辑:Askic V 2023年2月27日
我还想建议我的天真和低效率的方法:
一个= dlmread (“testfile5p.txt”);
nr_rows =大小(1);
A2 = 0(装天花板(大小(A, 1) / 2)、19);
我= 1:nr_rows-1
A2(我:)=((我:),(i + 1, 1:4)];
结束
B = A2(1:2:最终,);
解决方案使用正+ transponse确实是读心。我不会期望。

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的