How do you separate the contents of one cell into separate columns?
13 次查看(过去 30 天)
显示 更早的评论
I have char-type data of both numbers and words, delimited by spaces, in a cell array of size 207x1. I want to separate the contents of the data in the first column into separate columns based on the space delimiter. Essentially, I want to perform an Excel "Text to Columns" function. My code looks like this:
fid = fopen('file.txt','r');
i = 1;
tline = fgetl(fid);
A{i,1} = tline;
while ischar(tline)
i = i+1;
tline = fgetl(fid);
A{i,1} = tline;
end
fclose(fid);
It produces cells that look like this:
'1553 word T 0 0 15 2 2 15328 0 0 1.00005 0'
I'm unsure if it matters, but I'm using R2013b.
3 个评论
回答(1 个)
Guillaume
2016-6-8
splitcells = regexp(yourcellarray, '\s+', 'split')
And assuming that all rows have the same number of columns you can then convert the cell array of cell array into a 2d cell array with:
splitcells = vertcat(splitcells{:})
3 个评论
Adam Still
2016-6-8
>> cellstr(some characters)
As an aside, have you tried tableread? I encountered a problem similar to this trying to read data from excel and I found it was more friendly for me. Not sure if it suits your needs. ~Adam
Guillaume
2016-6-8
If you're using the code you've posted to fill A, then all cells are already strings (unless A was not empty to start with).
To make sure that A is empty to start with replace the:
A{i,1} = tline;
before the loop (not inside the loop) by
A = {tline}; %initialise cell array with the first line.
But as Stephen said you're probably better off with textscan.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!