Read colomn data from file

1 次查看(过去 30 天)
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
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 个)

Orion
Orion 2014-11-8
Hi, try this
FileId = fopen('b.txt');
DataCell = textscan(FileId, '%.8f','Delimiter','\n', 'HeaderLines', 39);
fclose(FileId);
DataCell = (reshape(cell2mat(DataCell),12,12))';
  1 个评论
Mani Ahmadian
Mani Ahmadian 2014-11-8
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

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by