How to import a file using only part of the name, such as an index at the begin of filename?

9 次查看(过去 30 天)
INTRO Hi, I have multiple text files named as below:
C:\Users\EMERSON\Desktop\1\1_2013-01-21__15-35-22.txt
C:\Users\EMERSON\Desktop\1\2_2013-01-21__15-35-23.txt
C:\Users\EMERSON\Desktop\1\3_2013-01-21__15-35-24.txt
C:\Users\EMERSON\Desktop\1\4_2013-01-21__15-35-25.txt
C:\Users\EMERSON\Desktop\1\5_2013-01-21__15-35-26.txt
C:\Users\EMERSON\Desktop\1\6_2013-01-21__15-35-27.txt
C:\Users\EMERSON\Desktop\1\7_2013-01-21__15-35-28.txt
The file name is made of three components: i) index k=1:arbitrary, ii) date, iii)hour.
And I want to import/load these files using only the first index (1,2,3,4,5,6,7). So I wrote:
for k = 1:1;
fid =fopen(['C:\Users\EMERSON\Desktop\1\',num2str(k),'~.txt']);
A=textscan(fid,'%f %f %f %f %f %f ');
fclose(fid);
end
For instance I use k=1:1 only to test if one file is imported correctly, later k=1:arbitrary.
Problem: I obtain the following error:
Error using textscan
Invalid file identifier. Use fopen to generate a valid file identifier.
I wonder if someone could tell me how to correct the first command line (fid=fopen....).
Thank you in advance for your attention
Emerson

采纳的回答

Walter Roberson
Walter Roberson 2013-1-21
  5 个评论
Cedric
Cedric 2013-1-22
编辑:Cedric 2013-1-22
There is certainly a function that will allow sorting according to what you need in one shot. Here would be one way to do it "by hand" until someone tells you how to do it properly:
txtFiles = ... (the way you define it)
[~,id] = sort(cellfun(@(n)sscanf(n,'%d_'), {txtFiles(:).name})) ;
for k = 1 : numel(txtFiles)
baseFileName = txtFiles(id(k)).name ;
...

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Import and Export 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by