How to apply conditional statements so as to select certain rows or columns on a given dataset.
Ältere Kommentare anzeigen
How do I apply conditional statements so as to select certain rows or columns on a given dataset (like the one below)? For example, I would like to (1) display records with r only , (2) count records with + only .
Please note that the example of the data to be analyzed is given below. The data is separated by space. The data has 12 columns whose headings are; Event, time, from_Node, to_Node, Packet_Type, Packet_Size, Flags, Fid, Source_Address, Destination_Address, Sequence_Number and Packet_Id .
For example, + 0.155355 1 3 tcp 1500 ------- 0 0.0 3.0 2 3;
+ is an event,
0.155355 is time in secs,
1 is from_Node,
3 is to_Node,
tcp is Packet_Type, 1500 is Packet_Size,
------- are Flags,
0 is Fid,
0.0 is Source_Address,
3.0 is Destination_Address,
2 is Sequence_Number and
3 is Packet_Id.
_ _This is the data _
+ 0.155355 1 3 tcp 1500 ------- 0 0.0 3.0 2 3
- 0.160955 1 3 tcp 1500 ------- 0 0.0 3.0 2 3
r 0.170955 1 3 tcp 1500 ------- 0 0.0 3.0 1 2
r 0.178955 1 3 tcp 1500 ------- 0 0.0 3.0 2 3
+ 0.203632 1 3 tcp 1500 ------- 0 0.0 3.0 3 6
- 0.203632 1 3 tcp 1500 ------- 0 0.0 3.0 3 6
+ 0.206032 1 3 tcp 1500 ------- 0 0.0 3.0 4 7
+ 0.211632 1 3 tcp 1500 ------- 0 0.0 3.0 5 8
Thank you
1 Kommentar
Manduna Watson
am 4 Jul. 2014
Akzeptierte Antwort
Weitere Antworten (1)
Sara
am 3 Jul. 2014
clc
clearvars
% Read file
filecontent = cell(1000,1);
k = 0;
fid = fopen('mydata.txt','r');
while 1
t = fgetl(fid);
if(~ischar(t)),break,end
k = k + 1;
filecontent{k} = t;
end
filecontent = filecontent(1:k);
fclose(fid);
% To get only the first character
fid = fopen('mydata.txt','r');
t = textscan(fid,'%s%*[^\n]');t = t{1};
fclose(fid);
% r data
index_r = find(strcmp(t,'r')==1);
filecontent(index_r)
% + data
index_plus = find(strcmp(t,'+')==1);
numel(index_plus)
5 Kommentare
Manduna Watson
am 4 Jul. 2014
Manduna Watson
am 7 Jul. 2014
Sara
am 7 Jul. 2014
Unde % r data, try this and see if it does what you like. ps: 'r' appears only on line 3 and 4 for the data posted.
index_r = find(strcmp(t,'r')==1);
f = filecontent(index_r);
value = cellfun(@(t)sscanf(t,'%*s %f%*[^\n]',...
numel(index_r)),f,'UniformOutput',0);
value = cell2mat(value);
plot(index_r,value,'o')
Manduna Watson
am 8 Jul. 2014
Manduna Watson
am 21 Jul. 2014
Kategorien
Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!