Indexing in a loop using fileparts
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello,
My filenames have the timestamp in them like this: X000_104520 where the #'s after the underscore are the HH:MM:SS
I wanted to loop through the files and take only the timestamp part and save it to a table or an array.
Here is my code that I'm having some issues with the indexing of the timestamp value (TS). Any help on this is appreciated, Thank you:
fileName = dir([pwd,'\*.txt']);
for n = 1:numel(fileName)
S=6;
[~,TS(n,:)]=fileparts(fileName(n).name);
L=length(TS(n,:));
TS(n,:)=TS(n,:)(L-(S-1):L); %Not able to properly index here
Results{n} = table(TS, 'VariableNames',{sprintf('File_%d',n)});
end
Results{:}
The filenames are, as I'm not able to upload the files due to Mathworks limit?
X000_104520.txt
X001_122004.txt
X002_034536.txt
0 Kommentare
Akzeptierte Antwort
Jatin
am 17 Sep. 2024
Bearbeitet: Jatin
am 17 Sep. 2024
The error you're encountering is due to MATLAB not interpreting the chain of indexing, which is why attempting "TS(n,:)(L-(S-1):L)" results in an "Invalid array indexing" error. Here's a simplified version of the code that will give you the desired results.
fileName = dir([pwd,'/*.txt']); % Get all .txt files in the current directory
TS = strings(numel(fileName), 1); % Pre-allocate an array of strings for timestamps
for n = 1:numel(fileName)
[~, name] = fileparts(fileName(n).name); % Extract filename without extension
TS(n) = name(end-5:end); % Extract the last 6 characters for the timestamp
end
% Convert to a table and display results
Results = table(TS, 'VariableNames', {'Timestamp'});
disp(Results);
If you want to know more about the MATLAB's capacity of chained indexing, read this MATLAB Answer post:
Hope this helps!
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Web Services finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!