I want matlab to read multiple text file. The matlab code to read the single text file and specific line is attached. How to read multiple text from the folder?
fid=fopen('E:\ReliabilityAll\alpha\sub1.txt');
StartLine=3;
for k=1:StartLine-1
fgetl(fid); % read and dump
end
Fline=fgetl(fid); % this is the 3rd line
%do stuff
fclose(fid)

 採用された回答

madhan ravi
madhan ravi 2020 年 7 月 10 日
編集済み: madhan ravi 2020 年 7 月 10 日

0 投票

for l = 1:8
fid=fopen(sprintf('E:\\ReliabilityAll\\alpha\\sub%d.txt',l));
StartLine=3;
for k=1:StartLine-1
fgetl(fid); % read and dump
end
Fline=fgetl(fid); % this is the 3rd line
%do stuff
fclose(fid)
end

8 件のコメント

Khan Muhammad Adeel Khan
Khan Muhammad Adeel Khan 2020 年 7 月 10 日
Thanks for the reply. But this will generate the following errors as:
Warning: Escaped character '\R' is not valid. See 'doc sprintf' for supported special characters.
> In linetext (line 3)
Error using fgets
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in fgetl (line 32)
[tline,lt] = fgets(fid);
Error in linetext (line 6)
fgetl(fid); % read and dump
madhan ravi
madhan ravi 2020 年 7 月 10 日
Replace \ with \\
Khan Muhammad Adeel Khan
Khan Muhammad Adeel Khan 2020 年 7 月 10 日
It works but can output the value of subject 8 only. I want to save the result from subject 1 to 8. Thanks for the response.
for l = 1:8
fid=fopen(sprintf('E:\\ReliabilityAll\\alpha\\sub%d.txt',l));
all_results=[];
StartLine=3;
for k=1:StartLine-1
fgetl(fid); % read and dump
end
Fline=fgetl(fid); % this is the 3rd line
all_results1=Fline;
all_results=[all_results;all_results1];
%do stuff
fclose(fid)
end
Walter Roberson
Walter Roberson 2020 年 7 月 10 日
I suggest
base = 'E:\ReliabilityAll\alpha\sub';
for l = 1 : 8
filename = sprintf('%s%d.txt', base, l);
[fid, msg] = fopen(filename);
if fid < 0
error('Failed to open file "%s" because "%s"', filename, msg);
end
end
madhan ravi
madhan ravi 2020 年 7 月 10 日
Fline = cell(8, 1);
for l = 1:8
fid=fopen(sprintf('E:\\ReliabilityAll\\alpha\\sub%d.txt',l));
StartLine=3;
for k=1:StartLine-1
fgetl(fid); % read and dump
end
Fline{l} = fgetl(fid); % this is the 3rd line
%do stuff
fclose(fid)
end
celldisp(Fline)
Khan Muhammad Adeel Khan
Khan Muhammad Adeel Khan 2020 年 7 月 10 日
Thanks @Madhan Ravi It really works and save my time to do it manually. I am pleased to note that it is really a very active platform and grateful to all of you for the kind response
madhan ravi
madhan ravi 2020 年 7 月 10 日
I suggest you to read sir Walter’s comment as well.
Khan Muhammad Adeel Khan
Khan Muhammad Adeel Khan 2020 年 7 月 10 日
Thanks Sir for the feedback and answers from you both really save my time and energy @Walter Roberson. Could you please suggest me a good platform to learn the coding in Matlab in an effective way or suggest any online open source? I woud be grateful

サインインしてコメントする。

その他の回答 (1 件)

Robert
Robert 2020 年 7 月 10 日
編集済み: Robert 2020 年 7 月 10 日

0 投票

You might also use a direct loop on the result of using the 'dir' command, if the '*' placeholder is sufficient for your search. Take care to use the transpose operator ' on the result of dir, because you need a row vector of results to for-loop.
sDir = 'C:\Users\Khan\Documents\MATLAB';
for sctFile = dir(fullfile(sDir, 'sub*.txt'))'
fh = fopen(fullfile(sDir, sctFile.name));
% here goes your code
% ...
fclose(fh);
end
Or just dir on the directory, and filter the file names within the loop..

カテゴリ

ヘルプ センター および File Exchange で Large Files and Big Data についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by