Delimiting a text file like "Text to columns"

Hello, I am trying to import data from a Text file (.txt). This data has a single column of mixed (numeric and string) data that is | (bar) delimited. My goal is to import this data and seperate each delimited portion into a seperate columns while maintaining the rows. Essentially, I am trying to do the Excel "Text to columns" with MATLAB. Thank you

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 14 Sep. 2011

0 Stimmen

%open file
fid = fopen(YourFile,'rt');
%figure out how many columns are there
firstline = fgetl(fid);
ncol = 1 + sum(firstline == '|');
%reset to beginning of file
fseek(fid,0,0);
%read data
indata = textscan(fid,repmat('%s',1,ncol),'Delimiter','|','CollectOutput',1);
%close file
fclose(fid);
The result will be indata, a cell array of strings.

4 Kommentare

Brian
Brian am 14 Sep. 2011
Keep getting error:
??? indata = textscan(fid,repmat('%s'1,ncol),'Delimiter','|','CollectOutput',1);
|
Error: Unexpected MATLAB expression.
Walter Roberson
Walter Roberson am 14 Sep. 2011
Sorry; I have edited the answer to add the missing comma.
Brian
Brian am 14 Sep. 2011
How do I look at indata's data? Below is a step-by-step output:
>> fid = fopen('RMS_Functional_Block_Report.txt','rt')
fid =
5
>> firstline = fgetl(fid)
firstline =
RMS Functional Block|Reference Designator|Part Number|Sheet Number|Description|Invisible
>> ncol = 1 + sum(firstline == '|')
ncol =
6
>> fseek(fid,0,0)
ans =
0
>> indata = textscan(fid,repmat('%s',1,ncol),'Delimiter','|','CollectOutput',1)
indata =
{646x6 cell}
>> fclose(fid)
ans =
0
Walter Roberson
Walter Roberson am 15 Sep. 2011
indata{L,C} will be the string that was on line #L at column #C
For example, indata{3,7} is column 7 of line 3.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by