indexing a loop to run through multiple files
조회 수: 32 (최근 30일)
이전 댓글 표시
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
댓글 수: 0
채택된 답변
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
Yongjian Feng
2021년 7월 7일
편집: Yongjian Feng
2021년 7월 7일
Yes. 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});
result = [];
for a = 1: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);
result(end+1) = GTav;
end
result
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!