indexing a loop to run through multiple files

2 次查看(过去 30 天)
C.G.
C.G.2021-7-7
评论: C.G. ,2021-7-7
I have experimental data in multiple csv files.
Ive written the code I want and checked this works by only inputting 1 specific file, but now I am trying to write in a loop to do the same for all the files. I am struggling with the indexing to get this to work, could anybody help?
%% input csv files
file = dir('*.csv'); %read the files into matlab
num_files = length(file); %record how many files have been found
[~, index] = natsort({file.name}); %sort the files into order
filelist = file(index);
%% Calculate granular temperature
for a = 1:length(num_files)
%read the table into matlab
table = table2array(readtable(filelist(a).name));
%save the particle ID's and velocity components
T = table(:, [1:4]);
%calculate resultant velocity for each particle (sqrt of the velcoities squared)
ResV = sqrt((T(:,2).^2) + (T(:,3).^2) + (T(:,4).^2));
%calculate mean resultant velocity of all the particles
ResVav = mean(ResV)
%calculate the average granular temperature
GTav = mean(ResV-ResVav)
end

采纳的回答

Yongjian Feng
Yongjian Feng 2021-7-7
Try this:
%% input csv files
file = dir('*.csv'); %read the files into matlab
num_files = length(file); %record how many files have been found
sorted = sort({file.name});
for a = 1:length(num_files)
%read the table into matlab
table = table2array(readtable(sorted{a}));
%save the particle ID's and velocity components
T = table(:, [1:4]);
%calculate resultant velocity for each particle (sqrt of the velcoities squared)
ResV = sqrt((T(:,2).^2) + (T(:,3).^2) + (T(:,4).^2));
%calculate mean resultant velocity of all the particles
ResVav = mean(ResV)
%calculate the average granular temperature
GTav = mean(ResV-ResVav)
end
  5 个评论

请先登录,再进行评论。

更多回答(0 个)

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by