fopen files in one dataset

1 visualización (últimos 30 días)
TS
TS el 14 de Dic. de 2020
Comentada: Mathieu NOE el 14 de Dic. de 2020
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 comentarios
Rik
Rik el 14 de Dic. de 2020
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
Mathieu NOE el 14 de Dic. de 2020
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

Iniciar sesión para comentar.

Respuesta aceptada

Rik
Rik el 14 de Dic. de 2020
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 comentarios
TS
TS el 14 de Dic. de 2020
Hey, sorry I dont quite get that. So instead of fopen(filename) I use the code of readlines?
Rik
Rik el 14 de Dic. de 2020
%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)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Data Import and Export en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by