如何阅读一个特别结构化数据文件与不同的结构吗
1视图(30天)
显示旧的评论
我有一个*。5 p文件(从软件WAMIT文件输出,可以通过Matlab读和/或任何文本编辑器),我想读通过Matlab。因为我不能上传一个*。5 p文件在论坛,我把它调整为*。txt文件并附示例文件。
现在,一行这个数据文件将包括19列(相隔一个标签或空间)。然而,输出文件的特定结构“包装”每个数据行包括只有15列,和下一个4行进入一个新行。一定数量的行后,结构的变化到6列。我添加以下截图(注意,不是来自附件的测试文件,但这是相同的结构)为了便于解释但附加数据文件应该进一步解释东西:)
![](http://www.tianjin-qmedu.com/es/matlabcentral/answers/uploaded_files/1308575/image.jpeg)
可以看到,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);
和另外两个解决方案是建议在前万博 尤文图斯面的帖子。我为这个错误道歉。
我怎么能读取数据,可能得到两个不同的读数,包括两个数据结构?
接受的答案
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行元素。