How to save each loop data
2 次查看(过去 30 天)
显示 更早的评论
Hi all,
I have a batch file need to input to workspace for analysis, and the file type is *.csv.
Following is the code that I used, and the output file only show thw last one "P"
I hope each input file cas save as P1, P2, P3,....
May I know how to modify it ? thank you.
%% Open file dir
[filename,filedir] = uigetfile('*.csv','Multiselect','on');
path = fullfile(filedir,filename);
path = path';
file = struct('name',path);
%% Cover struc to cell
c= struct2cell(file);
opts = delimitedTextImportOptions("NumVariables", 9);
% Specify range and delimiter
opts.DataLines = [3, Inf];
opts.Delimiter = [" ", ","];
% Specify column names and types
opts.VariableNames = ["V", "I1V", "I2V", "I3V", "I4V", "I5V", "I6V", "I7V", "I8V"];
opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double", "double"];
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";
%% Readtable Import the data
for i=1:length(file)
P = table2array(readtable(c{i}, opts));
end
1 个评论
采纳的回答
Subhadeep Koley
2019-10-29
You defined P as a single variable, therefore it is holding only the last value of the loop. If you want to want to save each loop data to a separate variable, the following code might help you.
Just declare P as an empty cell array and access P using the indexing variable i in every loop.
%% Open file dir
[filename,filedir] = uigetfile('*.csv','Multiselect','on');
path = fullfile(filedir,filename);
path = path';
file = struct('name',path);
%% Cover struc to cell
c= struct2cell(file);
opts = delimitedTextImportOptions("NumVariables", 9);
% Specify range and delimiter
opts.DataLines = [3, Inf];
opts.Delimiter = [" ", ","];
% Specify column names and types
opts.VariableNames = ["V", "I1V", "I2V", "I3V", "I4V", "I5V", "I6V", "I7V", "I8V"];
opts.VariableTypes = ["double", "double", "double", "double", "double", "double", "double", "double", "double"];
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";
% Declare empty cell array P
P = {};
%% Readtable Import the data
for i=1:length(file)
P{i} = table2array(readtable(c{i}, opts));
end
Hope this helps!
2 个评论
Stephen23
2019-10-29
+1 tidy answer.
Using path as a variable name should be avoided, as this shadows the inbuilt path function.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 File Operations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!