【发布时间】:2009-12-08 02:32:38
【问题描述】:
我有点卡在一个问题上。我每天都会生成大量文件,我需要按文件名和日期对它们进行排序。我需要这样做,以便我的 MATLAB 脚本可以读取它们。我目前手动执行此操作,但想知道 MATLAB 中是否有更简单的方法来排序和复制文件。
我的文件名如下:
data1_2009_12_12_9.10
data1_2009_12_12_9.20
data1_2009_12_12_9.30
data1_2009_12_12_9.40
data2_2009_12_12_9.10
data2_2009_12_12_9.20
data2_2009_12_12_9.30
data2_2009_12_12_9.40
data3_2009_12_12_9.10
data3_2009_12_12_9.20
data3_2009_12_12_9.30
data3_2009_12_12_9.40
...
还有大量这样的文件。
以上问题的补充:
必须有一种更简单的方法将文件拼接在一起。 我的意思是复制文件 文件“data1_2009_12_12_9.10”之后的“data1_2009_12_12_9.20”等等,... 这样我就剩下一个名为 data1_2009_12_12 的巨大 txt 文件(或任何其他文件)。包含拼接在一起的所有数据。 现在我知道的唯一方法是在matlab中使用单独的dlmread命令打开所有文件,然后xls一个接一个地写入(或者更简单的手动复制粘贴方式)
【问题讨论】:
-
所有这些文件都在一个文件夹中吗?另外,您的意思是在您的示例中重复文件名,还是最后一个数字应该每增加 10?
-
是的,所有文件一开始都在同一个文件夹中。文件名不重复。第一行在文件名中有不同的时间(文件名的一部分)。 data19.10, data19.20第二行有data3****
-
那么,您到底想要什么结果呢?您的输入文件已经命名,因此它们按字母顺序按数据集排序,然后按时间排序,对吗? (所有按时间排序的 data1,按时间排序的所有 data2,等等。)如果你在 Unix 系统上,matlab 的 system() 函数可以运行一个 shell 命令,它可能类似于 'mkdir data1; mv -t data1 data1_*'。 (我在 GNU/Linux 上有 octave,但我用得不多,所以我不知道如何在 octave 中使用它的 ls、排序和重命名函数来执行此操作......)
-
@AP:我根据我的认为你的意思修改了你问题中一些文件名的最后两位数字(其中很多都有@987654322 @当我猜他们应该是
20,30,等等)。 -
关于您的编辑...您正在使用哪种机器(Windows、Linux 等)?您可以使用系统命令更轻松地连接数据文件。