Hi, I have a Unicode file as 'b.txt', contains 39 lines of header and data in other lines. I want to remove header lines and then read all data lines. I'm using this code:
FormatStr = repmat('%f ',1,12);
FileId = fopen('b.txt');
DataCell = textscan(FileId, FormatStr, 'Delimiter', ' ', 'HeaderLines', 39, 'CollectOutput', 1);
fclose(FileId);
TheData = DataCell{1};
But at final, TheData is in bad form. I want to have each column of data in a separate column in my variable TheData.
Please help me to solve it.
Thanks, Mani

 채택된 답변

per isakson
per isakson 2014년 11월 8일
편집: per isakson 2014년 11월 8일

0 개 추천

Try
TheData = cssm();
where
function TheData = cssm()
FormatStr = repmat( '%f', 1,12 );
FileId = fopen('b.txt');
DataCell = textscan(FileId, FormatStr ...
, 'HeaderLines', 39, 'CollectOutput', true );
fclose(FileId);
TheData = DataCell{1};
end
The problem with your code has something to do with the delimiter being "one space" or "one or many spaces". And no need (/better not) to include space in the format-string. Default takes care of it. See the documentation.

댓글 수: 1

Mani Ahmadian
Mani Ahmadian 2014년 11월 8일
Dear Per isakson, Nice code. Thanks a lot.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Orion
Orion 2014년 11월 8일

0 개 추천

Hi, try this
FileId = fopen('b.txt');
DataCell = textscan(FileId, '%.8f','Delimiter','\n', 'HeaderLines', 39);
fclose(FileId);
DataCell = (reshape(cell2mat(DataCell),12,12))';

댓글 수: 1

Dear Orion, Thanks for your fast answer. I test your code, it works on my sample file, it contains 12 rows and 12 colomns. My data file has 12 colomns but the rows are unknown. How I can reach to rows number to change your code as bellow?
MyRows=?
DataCell = (reshape(cell2mat(DataCell), MyRows ,12))';
Have a nice time
Mani

댓글을 달려면 로그인하십시오.

카테고리

질문:

2014년 11월 8일

편집:

2014년 11월 8일

Community Treasure Hunt

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

Start Hunting!

Translated by