How to save each loop data
7 ビュー (過去 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 件のコメント
Stephen23
2019 年 10 月 22 日
編集済み: Stephen23
2019 年 10 月 22 日
"I hope each input file cas save as P1, P2, P3,...."
Don't do that. Read this to know why:
You should use indexing, just like the MATLAB documentation shows:
Indexing is simple, easy to debug, and very efficient (unlike what you are trying to do).
採用された回答
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!