textscan fopen

조회 수: 12 (최근 30일)
Tiina
Tiina 2012년 1월 4일
I have a file to open which looks as follows
row1: '#CIR,Date[L],Time[L],Type,Clr Dir.'
then a list of
rows 'AXY.P,20050101,09:35:01.202,quant,^'
I used fid=fopen('location of the file …) textscan(fid, ' …%s %f combinations …. yet couldn;t get out what I wanted in an output
I wish to have 5 columns as shown by the delimiter ',' and convert the last column sign^ to a number say 1. Ultimately it would look like
AXY.P 20050101 09:35:01.202, quant, 1
Any help is appreciated.

답변 (4개)

Friedrich
Friedrich 2012년 1월 4일
Hi,
I created a file (data.txt) which contains the following lines
AXY.P,20050101,09:35:01.202,quant,^
AXY.P,20050101,09:35:01.202,quant,^
AXY.P,20050101,09:35:01.202,quant,^
You can get this data into MATLAB like this:
fid = fopen('data.txt','r');
data = textscan(fid,'%s%s%s%s%s','delimiter',',');
fclose(fid);
celldisp(data)
So convert the ^ to the number 4:
data{5} = num2cell(4*ones(size(data{5})));
celldisp(data)
  댓글 수: 2
Tiina
Tiina 2012년 1월 5일
Hi,
with respect to the column containing character ^ (and some letters) num2cell may impose a value rather than convert or assign a number for characters and/or letters. if I use data.txt as created in the answer and I make an adjustment it may clarify the question more
AXY.P,20050101,09:35:01.202,quant,^
AXY.P,20050101,09:35:01.202,quant,w
AXY.P,20050101,09:35:01.202,quant,q
AXY.P,20050101,09:35:01.202,quant,^
then the char in the end would be in a col like
1
2
3
1
Tiina
Walter Roberson
Walter Roberson 2012년 1월 5일
Use the three-output form of unique() and use the third output as the column value.

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


TAB
TAB 2012년 1월 5일
Considering the content of file are as
AXY.P,20050101,09:35:01.202,quant,^
AXY.P,20050101,09:35:01.202,quant,w
AXY.P,20050101,09:35:01.202,quant,q
AXY.P,20050101,09:35:01.202,quant,^
-------------------------------------------------------
SymbolTable={'^','w','q'};
NumTable =[1 ,2 ,3];
fid = fopen('data.txt');
data = textscan(fid,'%s%s%s%s%s','delimiter',',');
for k=1:length(data{5})
data{5}(k)=num2cell(NumTable(strcmp(SymbolTable,data{5}(k))==1));
end
fclose(fid);

Tiina
Tiina 2012년 1월 5일
strfind() .... did the trick, thanks for your input as well

yair suari
yair suari 2012년 1월 5일
it looks like you want to use csvread

카테고리

Help CenterFile Exchange에서 Text Data Preparation에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by