Handling character array rather than cell

Hello,
I have a text file (file name: X) having identifiers with 64 byte characters. I used textscan function to read the identifiers in MATLAB as follows:
fid = fopen('X','r');
data = textscan(fid,'%64c','delimiter',',');
As a results, I have a cell of records having 64 byte identifiers. My question is how to have a character array instead of a cell?
I can use function char() to change a cell into a character array:
data = char(data);
But I want to generate a character array when I read the text file using textscan because char() function requires another long time to execute.
Thank you for your attention.

 Accepted Answer

data{:}

1 Comment

Yongmin
Yongmin on 13 Jun 2015
Edited: Yongmin on 13 Jun 2015
Hello Azzi,
Do you mean use data{:} instead of using char() ? I will try to use the command.
Thanks a lot for your answer!!

Sign in to comment.

More Answers (1)

fid = fopen('X','r');
data = textscan(fid,'%64c','delimiter',',');
data = data{1}; %extracts array of char from cell array
When you use %c format in textscan the corresponding output is an array of character; and as usual, the outputs are all encapsulated in a cell array.
This differs from using %s format in textscan, in which case the corresponding output is a cell array of strings, which is something you might want to apply char() to in order to create a character array.
There is no way to get textscan to return values not encapsulated in a cell array. There is, however, no conversion time to use data{1} to get at the character array.

1 Comment

Dear Walter Robserson,
Thanks a lot for your kind explanation. I understand the limitation of textscan function.

Sign in to comment.

Categories

Products

Asked:

on 13 Jun 2015

Commented:

on 13 Jun 2015

Community Treasure Hunt

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

Start Hunting!