如何阅读一个特别结构化数据文件与不同的结构吗

1视图(30天)
我问一个 类似的问题 在论坛上只有意识到我措辞不当和不完全的。重复我的道歉。
我有一个*。5 p文件(从软件WAMIT文件输出,可以通过Matlab读和/或任何文本编辑器),我想读通过Matlab。因为我不能上传一个*。5 p文件在论坛,我把它调整为*。txt文件并附示例文件。
现在,一行这个数据文件将包括19列(相隔一个标签或空间)。然而,输出文件的特定结构“包装”每个数据行包括只有15列,和下一个4行进入一个新行。一定数量的行后,结构的变化到6列。我添加以下截图(注意,不是来自附件的测试文件,但这是相同的结构)为了便于解释但附加数据文件应该进一步解释东西:)
可以看到,1 ~ 7556行有19列(15在下一行一行和4包),7557 ~有6列和行。这两个结构重复的数据文件。
这是我的代码:
fid = fopen (“test.5p”);
C = cell2mat (textscan (fid,' % % % f % f % f % % % f % f % % % f % f % f % % % f % f % f '));
文件关闭(fid);
和另外两个解决方案是建议在前万博 尤文图斯面的帖子。我为这个错误道歉。
我怎么能读取数据,可能得到两个不同的读数,包括两个数据结构?
2的评论
杰克
杰克 2023年2月27日
几乎总是,是的。但是,我想有一个选项,不考虑。“线”相关的附加测试数据文件是600,顺便说一句。

登录置评。

接受的答案

Askic V
Askic V 2023年2月27日
我建议以下解决方案:
一个= readtable (“test.5p”,“ReadVariableNames”假的,“文件类型”,“文本”);
nr_rows =大小(1);
A2 = [];
B2 = [];
我= 1:nr_rows-1
aux_i = str2num (cell2mat (table2array((我,:))));
aux_ii = str2num (cell2mat (table2array ((i + 1,:))));
如果元素个数(aux_i) = = 15 & &元素个数(aux_ii) = = 4
A2 = [A2;[aux_i, aux_ii]];
结束
如果元素个数(aux_i) = = 6
B2 = [B2;aux_i];
结束
如果(元素个数(aux_ii)) = = 6 & & (i = = nr_rows-1)
B2 = [B2;aux_ii];
结束
结束
这段代码将创建一个单独的矩阵组成的B2 6行元素。

更多的答案(0)

标签

社区寻宝

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

开始狩猎!

翻译的