Reading a text file

조회 수: 5 (최근 30일)
Slobodan Djordjevi?
Slobodan Djordjevi? 2011년 11월 21일
Hey everyone!
I have a question regarding textscan[]; command.
I have a file and I want to read it, but somehow I can't get it to read the I want to. The file looks like this :
CsF 33 734824
Al 22 734824
NaCl 77 734824
This is a mere sample and it updates now and then but that's not important. I want it to read in a way that each cell has an information about change. The change consists of element, mass and MatLab date number. So in this case a cell array would be "CsF 33 734824" or {3x1}. I have only been able to read it nicely, but the problem is that all three informations get put into one cell.
So I have whitespace and newline separators.
fid = fopen('Spojine.txt');
R = textscan(fid, '%s', 'delimiter', '\n');
fclose(fid);
If someone would be nice enough to assist my code, that would be lovely! :)

채택된 답변

Fangjun Jiang
Fangjun Jiang 2011년 11월 21일
I recommend Jan's approach because it puts string into sting and numerical to numerical. But if you want it, you can use reshape().
fid = fopen('test.txt');
R = textscan(fid, '%s');
S=reshape(R{:},3,[]).';
fclose(fid);

추가 답변 (2개)

Jan
Jan 2011년 11월 21일
fid = fopen('Spojine.txt');
R = textscan(fid, '%s %f %f', 'delimiter', ' ')
fclose(fid);
Then the names are found in the cell string R{1}, and the values as vectors in R{2} and R{3}.
  댓글 수: 2
Slobodan Djordjevi?
Slobodan Djordjevi? 2011년 11월 21일
Thanks for a quick reply!
This is exactly what I don't want :)
I'm sorry you misunderstood.
Your code simply puts columns into cell string and 2 vectors.
I want it to read rows. The exact opposite.
Jan
Jan 2011년 11월 21일
@Slobodan: Waht about posting exactly, what you want as output? The "exact opposite" is not well defined.

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


Slobodan Djordjevi?
Slobodan Djordjevi? 2011년 11월 21일
Thank you both!
Reshape is the thing I was looking for.
Jan, you are right, it would create problems later on if I had strings and numeric data in one.
I should have done it with structers, but I think I can avoid those.
Cheers from Slovenia.
Slobodan
  댓글 수: 1
Fangjun Jiang
Fangjun Jiang 2011년 11월 21일
Or you could avoid using reshape,
%%
fid = fopen('test.txt');
R = textscan(fid, '%s %s %s','collectoutput',true);
fclose(fid);

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

카테고리

Help CenterFile Exchange에서 LaTeX에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by