How to store several tables in one table using a loop

2 views (last 30 days)
I want to store several csv files into tables which I then store in one table in order to plot them easily. Storing one csv file into one table works perfectly. Matlab won't use my counter for the for-loop as table fieldname, so it overwrites the first entry. This is my code so far:
counter = 1;
filename = ['measurement' sprintf( '%03d', counter) '.csv'];
while exist(filename, 'file') == 2
filename = ['measurement' sprintf( '%03d', counter) '.csv']
T.counter = readtable(filename) % this isn't working
counter = counter + 1;
end
The output is a 1x1 table T with the csv content named 'counter'. What I'd like to have is a n x 1 table T with n equals the amount of csv files.

Accepted Answer

Ameer Hamza
Ameer Hamza on 11 Nov 2020
Edited: Ameer Hamza on 11 Nov 2020
Creating a table of tables might not be a good strategy. The usual way is to create a cell array of tables. The following code shows an example
files = dir('measurement*.csv');
T = cell(size(files));
for i = 1:numel(files)
T{i} = readtable(files(i).name) % this isn't working
end
  5 Comments
Tamara Szecsey
Tamara Szecsey on 27 Dec 2020
Even though the pathname is correct, the same error message occurs.
But it seems that I figured out how to plot several files of different directories by creating a new script for every directory and running the script in between hold on and hold off:
clc;
clear;
close all;
figure;
grid on;
hold on;
run('script1.m')
for i = 1:size(T)
Tnew{i,1}=T{i,1}
end
run('script2.m')
for i = 1:size(T)
Tnew{i,2}=T{i,1}
end
[r,c] = size(Tnew)
for j = 1:r
plot(t,Tnew{j,1}.(3), '-k')
end
hold off;
And script1.m and script2.m looks like your first answer just with a cd command in the beginning and cd ../ for exiting the directory again.

Sign in to comment.

More Answers (0)

Categories

Find more on Startup and Shutdown in Help Center and File Exchange

Tags

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!