how to extract this data?

1 view (last 30 days)
Pengju
Pengju on 4 Feb 2016
Commented: Star Strider on 4 Feb 2016
Anyone,
I want to extract the data in the end row.
The meaningful data comes every "0" changes in the first row...
Best,
Pen
  2 Comments
dpb
dpb on 4 Feb 2016
Paste the data as text rather than as an image if you expect somebody to actually do anything other than "air code"
Pengju
Pengju on 4 Feb 2016
I am sorry for that.

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 4 Feb 2016
One option:
fidi = fopen('your_text_file_name.txt','r');
Data = textscan(fidi, '%f%f%f', 'HeaderLines',4, 'CollectOutput',1);
fclose(fidi);
You might have to add an 'EndOfLine' argument if you only get a (1x1) cell from the previous code:
fidi = fopen('your_text_file_name.txt','r');
Data = textscan(fidi, '%f%f%f', 'HeaderLines',4, 'CollectOutput',1, 'EndOfLine','\r\n');
fclose(fidi);
You can then parse the columns as you wish. Use a cell array. Find the zeros in the first column using the find function:
DataD = cell2mat(Data);
Zeros1 = [find(DataD(:,1) == 0); size(DataD,1)];
for k1 = 1:length(Zeros1)
Record{k1} = DataD(Zeros1(k1):Zeros1(k1+1)-1,:);
end
Note This is UNTESTED CODE, since I do not have your file to test it with.
  10 Comments
Pengju
Pengju on 4 Feb 2016
Thanks a lot
Star Strider
Star Strider on 4 Feb 2016
My pleasure.
If my Answer solved your problem as you stated it in your Question, please Accept it.

Sign in to comment.

More Answers (1)

dpb
dpb on 4 Feb 2016
As noted above, w/o a file to test, something like
fid=fopen('yourfile'); % open file
d=cell2mat(textscanf(fid,'','headerlines',4)); % read numeric data (Nx3 array)
fid=fclose(fid); % done w/ file
ix=[find(d(:,1)==0);length(d)+1]; % locations of segment breaks in data plus end
for i=1:length(ix)-1 % over the number of breaks
data{i}=d(ix(i):ix(i+1)),3); % save each group as a cell array
end
Do whatever with the contents of data for each cell as desired.
  1 Comment
Pengju
Pengju on 4 Feb 2016
??? Index exceeds matrix dimensions.
Error in ==> read_20160204_1 at 11 data{i}=d(ix(i):ix(i+1),3); % save each group as a cell array

Sign in to comment.

Categories

Find more on Environment and Settings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!