Checking index numbers against non-contiguous file names

7 ビュー (過去 30 日間)
Natalie Cannon
Natalie Cannon 2020 年 9 月 28 日
コメント済み: Natalie Cannon 2020 年 9 月 28 日
I am currently trying to upgrade a section of code by having the code figure out how many files there are instead of having the user enter the number.
What I have so far is:
filenumberfinal=dir( '*FM*.txt');
out=size(filenumberfinal,1);
This works great if all of the files are contiguous, but that might not always be the case.
Is there a way to check that each index number has a matching file to it?
For reference files are named as follows:
###_FM##_HF_0221
where # is a number

採用された回答

Cam Salzberger
Cam Salzberger 2020 年 9 月 28 日
Hello Natalie,
I'm making some guesses about what you are looking for here. The situation is that you have these files in a single directory:
  • 123_FM01_HF_0221.txt
  • 123_FM02_HF_0221.txt
  • 123_FM67_HF_0221.txt
And currently your code is designed to open files in order based on the file name. Something like:
filenumberfinal=dir( '*FM*.txt');
out=size(filenumberfinal,1);
for k = 1:out
fname = sprintf('123_FM%02d_HF_0221.txt')
...
end
And that only works if the filenames have contiguous numbers, because you are counting from 1 to the number of files you have found.
If that's the case, then my suggestion is to instead use the output of "dir" to operate on the files that match the pattern.
dirInfo = dir('*FM*.txt');
for k = 1:numel(dirInfo)
fname = dirInfo(k).name;
...
end
Let me know if I'm misunderstanding something though.
-Cam
  1 件のコメント
Natalie Cannon
Natalie Cannon 2020 年 9 月 28 日
This is exactly what I was looking for. Thank you!

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeFile Operations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by