How to read a text file with multiplel matrix data sets listed one after another

1 次查看(过去 30 天)
Below is an example (in the real world, I have hundreds of data sets in a text file):
How do I load the data into Matlab?
Thank you in advance.

回答(3 个)

Liqing
Liqing 2011-8-25
I am still waiting for an answer. Thanks.

Friedrich
Friedrich 2011-8-25
Hi,
trz
fid = fopen('sample.txt','r');
out = textscan(fid,'%s %s %s \r\n %f %f %f \r\n %f %f %f \r\n %f %f %f \r\n %f %f %f \r\n');
fclose(fid);
celldisp(out)
It depends on your OS if you have to use \r (MAC) or \n (Unix) or \r\n (Windows)
  2 个评论
Liqing
Liqing 2011-8-25
Thank you very much. It works.
What if I have unknown and different number of matrix rows for each of them?
Walter Roberson
Walter Roberson 2011-8-25
textscan by default ignores both \r and \n as being "Whitespace", so you can ignore the terminator issue:
textscan(fid, [repmat('%s',1,3) repmat('%f',1,12)]);

请先登录,再进行评论。


Fangjun Jiang
Fangjun Jiang 2011-8-25
What is your desired output? Do you care about the text strings? The overall approach is to use textscan(). You can type help textscan or doc textscan for details.
fid=fopen('sample.txt','rt');
data=textscan(fid,'%f','CommentStyle','Depth');
fclose(fid);
data{1}
  4 个评论
Fangjun Jiang
Fangjun Jiang 2011-8-25
You can use fgetl() to read the file line by line. If the line contains comma, read it as string (%s), otherwise, read it as double (%f). There is really no hard part. It's just tedious. If you just have one file to read, it might worth to convert it to a .xls file and then use [Num,Txt,Raw]=xlsread().
Fangjun Jiang
Fangjun Jiang 2011-8-25
Here is an example.
http://www.mathworks.com/matlabcentral/answers/13383-how-to-extract-numerical-datafrom-txt-file-with-mixed-string-and-numerical-data

请先登录,再进行评论。

标签

Community Treasure Hunt

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

Start Hunting!

Translated by