fopen files in one dataset
1 回表示 (過去 30 日間)
古いコメントを表示
Hi!
I collected two different data sets from 30 subjects, so in total I have 60 different .txt files. My goal is to have them all in one big dataset, already in order. The files have different endings (_MT or _OT), depending on the coniditon. Each subject should therefore appear twice within the dataset, but already labeled with 0 or 1 for the condition. I tried to go with a for loop.
for ssubj = 001:030
filename = ['VP0', num2str(ssubj), '_MT.txt'];
filename2 = ['VP0', num2str(ssubj), '_OT.txt'];
file = fopen('/Users/cf/Documents/MATLAB/Passive');
tmp = textscan(file, '%s%f%f%f', 'CollectOutput', true, 'Delimiter', ' ', 'HeaderLines', 3);
[~] = fclose(file);
dat(: , 1, ssubj) =
end
I always get this error... Or is the directory already wrong?
Error using textscan
Invalid file identifier. Use fopen to generate a valid file identifier.
Thank you for your help!
5 件のコメント
Rik
2020 年 12 月 14 日
Are you sure the files exist? You don't check if they exist.
You can check if Matlab is able to open the file by checking if the fid is above 0.
Mathieu NOE
2020 年 12 月 14 日
you can , at least, test my code in the same directory of your data files
it should work , because this is very basically what I did
then, if you need to access your data from different folder(s) use fullfile with the folder / directory info
採用された回答
Rik
2020 年 12 月 14 日
You don't use either filename when calling fopen. How is Matlab supposed to know which file you mean?
I would suggest using either readlines (introduced in R2020b) or readfile (which you from the FEX, if you are using R2017a or later, you can also get it through the AddOn-manager). Both of those functions will be able to deal with the UTF-8 encoding in your files. The first will return your file as a string vector, the latter as a cellstr.
2 件のコメント
Rik
2020 年 12 月 14 日
%instead of this
filename = ['VP0', num2str(ssubj), '_MT.txt'];
fid = fopen(filename);
out1 = textscan(fid, '%s%f%f%f', 'CollectOutput', true, 'Delimiter', ' ', 'HeaderLines', 3);
fclose(fid);
%use this
filename = ['VP0', num2str(ssubj), '_MT.txt'];
out1=readfile(filename); %(requires downloading the FEX submission or adding it through the Add-On Manager)
%or this
filename = ['VP0', num2str(ssubj), '_MT.txt'];
out1=cellstr(readlines(filename));%(requires R2020b)
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Data Import and Export についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!