Textscan with multiple delimiters

54 vues (au cours des 30 derniers jours)
Andy
Andy le 21 Oct 2013
Modifié(e) : per isakson le 21 Oct 2013
I want to read a text file into a cell array so that i have each line of my file as a new row and each attribute in my file as a column on that row.
file = fopen('file.txt');
d = textscan(file,'%s %d %d %d ,'delimiter',',');
If i run the code above it gives me a 1 x n array. If i type d{1} i get the first character of every line. Similarly if i type d{2} i get the second attribute of every line. Instead of having 1 x the number of attributes i would like the number of lines x the number of attributes so i can easily. Retrieve the values i need.
I asked a similar question yesterday but that gave me 2 separate arrays where i want all of this to be stored in the same cell array.
I have also tried this as my delimiter but it tells me the Delimiter must be a string.
'delimiter',{',','\n'}
  1 commentaire
Cedric
Cedric le 21 Oct 2013
Could you attach your data file or part of it?

Connectez-vous pour commenter.

Réponse acceptée

Kelly Kearney
Kelly Kearney le 21 Oct 2013
You should be able to get what you want with just a bit of post-processing following your textscan line:
str = sprintf('one,1,2,3\ntwo,4,5,6\n');
d = textscan(str,'%s %d %d %d', 'delimiter',',');
d = [d{1} num2cell(cat(2, d{2:4}))];
  1 commentaire
Andy
Andy le 21 Oct 2013
I have managed to access the data in its current form now. It took some time to work out how to access the cell array but i can now just use d{1}(2) to access column 1, 2nd element for example.

Connectez-vous pour commenter.

Plus de réponses (1)

per isakson
per isakson le 21 Oct 2013
Modifié(e) : per isakson le 21 Oct 2013
I'm not sure I understand your question, but:
textscan( '1,2;3:4', '%d%d%d%d', 'Delimiter', ',;:' )
ans =
[1] [2] [3] [4]
>>

Community Treasure Hunt

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

Start Hunting!

Translated by