Clear Filters
Clear Filters

Handling character array rather than cell

2 views (last 30 days)
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

Azzi Abdelmalek
Azzi Abdelmalek on 13 Jun 2015
  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)

Walter Roberson
Walter Roberson on 13 Jun 2015
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
Yongmin
Yongmin on 13 Jun 2015
Dear Walter Robserson,
Thanks a lot for your kind explanation. I understand the limitation of textscan function.

Sign in to comment.

Products

Community Treasure Hunt

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

Start Hunting!