ループ内でテーブルを番号つきで管理する方法
3 views (last 30 days)
Show older comments
フォルダ内のdatファイルをすべて読み込み、fie1,fie2...というtableで管理したいのですが
知恵をいただけないでしょうか。
datFileList = dir(['*.dat']);
datNum = size(datFileList);
kk = 1;
for kk = 1 : datNum(1)
disp(kk)
datFileName = char(datFileList(kk).name); % char型に変換
HeaderlinesIn=6;
tmp = importdata(datFileName,'\t',HeaderlinesIn); %headerと数値を分けてimport
headname=strrep(tmp.colheaders,'%','percent'); %headerの名前の調整、%は変数名として使えないので
vcell = genvarname(headname); %変数名がかぶらないように処理
fie{kk}= array2table(tmp.data,'VariableNames',vcell); %変数と数値を合わせてtable化
end
0 Comments
Accepted Answer
Kazuya
on 15 Jun 2019
dat ファイル1つ1つの読み込み結果を、 fie1, fie2, ... という table 変数にするということですね?それであれば eval 関数でできそうですが、下記ページのよるとあまりお勧めでは無いようですのでご注意を。。
参考:MATLAB: 関数 eval の代替方法 https://jp.mathworks.com/help/matlab/matlab_prog/string-evaluation.html
fie{kk}= array2table(tmp.data,'VariableNames',vcell); %変数と数値を合わせてtable化
のところを
tmp2 = array2table(tmp.data,'VariableNames',vcell); %変数と数値を合わせてtable化
eval(['fie', int2str(kk),' = tmp2;']);
に変更すればOKなはず。
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!