从分隔文本文件中读取数据

8次浏览(最近30天)
泰哈斯阿帕吉酒店
泰哈斯阿帕吉酒店 2021年1月12日
评论: 明星黾 2021年1月12日
你好,
我有一个带分隔符的文本文件,它包含8行和4列,这在“n”集合中重复。我需要复制每行的第4列值,并创建一个新变量。
共有8个维度为(n,1)的变量。
我可以使用dlm read来读取文件。但是我很难创建嵌套循环来实现这个目标。
我附上了文本文件供参考。解决这个问题的最好方法是什么?

接受的答案

明星黾
明星黾 2021年1月12日
这是一个比较困难的文件,我已经设法导入!
看看这是否符合你的要求:
fidi = fopen (“water.txt”);
对于k=1:3
hdr{k,:}=fgets(fidi);%读取并存储标题行
终止
k1=1;
~ feof (fidi)
sechdr(k1,:)=textscan(fidi,“% % f”1);
如果isempty (sechdr)
打破
其他的
对于k2=1:8
secline(k2,:)=textscan(fidi,“% % % f % f % f '1);
终止
secdata {k1} = cell2mat (secline);
k1 = k1 + 1;
终止
终止
fclose(fidi);
与:
: hdr_1 = sechdr (1)%显示数据(删除)
data_1=secdata{1}
hdr_LastFull = sechdr (k1-2:)%显示数据(删除)
data_LastFull=secdata{k1-2}
生产:
hdr_1 =
1.×2细胞数组
{[5000]} {[8]}
data_1 =
1.0000e+00 1.6087e-07 2.500e -01 8.4682e-02 2.8968e-01
2.0000e+00 5.3421e-02 1.0823e-01 1.0074e-02 1.7172e-01
3.0000e+00 3.723e -02 1.2488e-02 2.2847e-02 7.2557e-02
4.0000e+00 2.0605e-01 2.9866e-02 1.9402e-01 4.2994e-01
5.0000e+00 1.4819e-01 4.3587e-02 5.9918e-02 2.5170e-01
6.0000e+00 6.4602e-02 1.2636e-01 1.2115e-02 2.0308e-01
7.0000e+00 3.7825e-01 2.5960e-01 1.9181e-01 8.2967e-01
8.0000e+00 1.1831e-02 3.4485e-02 3.8945e-02 8.5260e-02
hdr_3219=
1.×2细胞数组
{[3223000]} {[8]}
数据表3219=
1.0000e+00 6.1856e-05 2.4395e+01 1.8241e+01 4.2636e+01
2.0000e+00 5.7546e+00 4.7172e+01 1.0499e+01 6.3425e+01
3.0000e+009.7735e+004.3917e+013.9653e+019.3343e+01
4.0000e+00 2.5318e+00 3.9988e+01 3.5174e+00 4.6038e+01
5.0000e+00 7.7347e+00 1.4633e+01 6.8984e+00 2.9266e+01
6.0000e+00 5.2029e+00 3.6422e+01 8.2238e+01 1.2386e+02
e+01 3.1026e+01 1.0219e+01 3.8708e-02 4.1284e+01
8.0000e+00 2.0353e-01 3.2281e+00 8.1987e+00 1.1630e+01
这个 “人类发展报告” 细胞阵列是第一个 3. 文件的标题行。这个 “sechdr” 单元格数组是每个节的第一行,并且 “secdata” 矩阵是否跟随它。
.
6个评论
明星黾
明星黾 2021年1月12日
非常感谢。
我还继续从其他人的帖子中学习答案,因为MATLAB是一个如此巨大的宇宙。

登录以发表评论。

更多答案(0)

s manbetx 845

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!