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.

Community Treasure Hunt

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

Start Hunting!