I have a .txt file with rows consisting of three elements, a word and two numbers, separated by commas.
For example:
a,142,5
aa,3,0
abb,5,0
ability,3,0
about,2,0
I want to read the file and put the words in one variable, the first numbers in another, and the second numbers in another but I am having trouble with textscan
.
This is what I have so far:
File = [LOCAL_DIR 'filetoread.txt'];
FID_File = fopen(File,'r');
[words,var1,var2] = textscan(File,'%s %f %f','Delimiter',',');
fclose(FID_File);
I can't seem to figure out how to use a delimiter with textscan
.
horchler is indeed correct. You first need to open up the file with
fopen
which provides a file ID / pointer to the actual file. You'd then use this withtextscan
. Also, you really only need one output variable because each "column" will be placed as a separate column in a cell array once you usetextscan
. You also need to specify the delimiter to be the,
character because that's what is being used to separate between columns. This is done by using theDelimiter
option intextscan
and you specify the,
character as the delimiter character. You'd then close the file after you're done usingfclose
.As such, you just do this:
Take note that the formatting string has no spaces because the delimiter flag will take care of that work. Don't add any spaces.
C
will contain a cell array of columns. Now if you want to split up the columns into separate variables, just access the right cells:These are what the variables look like now by putting the text you provided in your post to a file called
filetoread.txt
:Take note that
names
is a cell array of names, so accessing the right name is done by simply doingn = names{ii};
whereii
is the name you want to access. You'd access the values in the other two variables using the normal indexing notation (i.e.n = num1(ii);
orn = num2(ii);
).