Loop different variables from workspace
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Mariana
el 16 de Dic. de 2019
num = 1; -------> 475
current_file = Test_1; -----------------> test_475 (Table of name 'Test_1' in workspace)
rate = height(current_file);
for i=1:rate
rel = current_file.S;
vel = current_file.E;
time = current_file.t;
Target_v{i,1} = rel(i) + vel(i);
if i == rate
T = array2table(Target_v);
C = [current_file(:,1:3) T current_file(:,4:45)]
eval(['Dataset_' num2str(num) '= C']);
Target_v= [ ];
end
end
I want to load multiple variables that are in workspace in a for loop add a column to each one of them and save them with another name or export them to excel. How can I do this?
4 comentarios
Stephen23
el 16 de Dic. de 2019
"I want to load multiple variables that are in workspace in a for loop..."
If they are already in the workspace then they have already been loaded (unless you wrote out all of those names by hand), so most likely the best choice would be to simplify your code and load the data into one array (e.g. a cell array, a structure, a table, etc.).
Note that having many numbered variables is a sign of badly designed data.
"...add a column to each one of them and save them with another name or export them to excel."
Easy with basic indexing into one variable.
Respuesta aceptada
Stephen23
el 16 de Dic. de 2019
Editada: Stephen23
el 16 de Dic. de 2019
The most important thing is to always load into an output variable:
Q = load(...) % Q is a scalar structure
where the fields of Q contain the variables from the .mat file. From there it is easy to access the fields using dynamic fieldnames:
As a special case, if each .mat file contains exactly one variable (e.g. a table) each with a different name, then you can use struct2cell quite effectively:
D = 'C:\Users\yourname\yourwork'; % absolute/relative path to where the files are saved
S = dir(fullfile(D,'*.mat'));
for k = 1:numel(S)
Q = load(fullfile(D,S(k).name));
C = struct2cell(Q);
T = C{1}; % T will be your table
... do whatever you want with T,
... then save it in a CSV file:
F = fullfile(D,sprintf('newfile_%d.csv',k));
writetable(T,F)
... or store it for accessing after the loop:
S(k).table = T;
end
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Structures en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!