writing each line of a text file in a cell array

5 views (last 30 days)
I try to write a text file in a cell array in MATLAB, each line consists of a number of strings,in to a cell array, and at last the whole file in a cell. the following code works well, but I am looking for a shorter and efficient way of implementing the code: (because I have many documents to apply to this code)
fileToRead = 'myfile.txt';
fid = fopen(fileToRead,'rt');
tmp = textscan(fid, '%s', 'Delimiter', '\n');
fclose(fid);
C=cell(1,1);
size(tmp{1,1})
k=1;
for i=1:size(tmp{1,1})
temp = strsplit(tmp{1,1}{i,1})
C{k,1}=temp;
k=k+1;
end
Does anyone know a better way?
Thanks
  1 Comment
dpb
dpb on 23 Mar 2016
I'm not following what you want as the end result. I small sample file and the desired output would help...

Sign in to comment.

Accepted Answer

Kirby Fears
Kirby Fears on 23 Mar 2016
Edited: Kirby Fears on 23 Mar 2016
Hi Shima,
From context clues, I'm guessing "myfile.txt" is a space-delimited table of data. Your approach is useful if you don't know exactly how many columns are in the file.
I made a utility function called delimread which you might find very helpful. You can download delimread and include it in your matlab path in order to call it.
The below example will read a space-delimited text file into a correctly sized cell array without specifying the number of columns in the file:
% Read file as raw text
fileToRead = 'myfile.txt';
result = delimread(fileToRead,' ','raw');
% display result
disp(result.raw);
If this doesn't work for you, please post a small sample of your text file so I can give a more accurate response.
Hope this helps.

More Answers (0)

Categories

Find more on Data Import and Export in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!