Filter löschen
Filter löschen

Extracting a particular data from the original data

3 Ansichten (letzte 30 Tage)
sam moor
sam moor am 14 Nov. 2016
Bearbeitet: Star Strider am 14 Nov. 2016
I have a data file named rd.txt attached below. 1st column data refers to time and all other columns refers the corresponding distance. Now I want to extract the data for 0.02,0.04,0.06,...60.00 sec (at a difference of 0.02) from 1st column and corresponding distances. Is there a way to extract data from the original data for a particular values? Your answer is highly appreciated. Thank you.

Akzeptierte Antwort

Star Strider
Star Strider am 14 Nov. 2016
You may not be reading your data correctly.
This works for me without error:
fidi = fopen('sam moor rd.txt','rt');
Dcell = textscan(fidi, repmat('%f',1,9), 'CollectOutput',1, 'Delimiter',' ');
D = cell2mat(Dcell);
L = size(D,1);
t = D(:,1);
q = length(t > 0)/L;
ti = 0 : 0.02 : max(t); % Interpolation Vector
Di = interp1(t, D(:,2:end), ti, 'linear'); % Interpolated Data
  2 Kommentare
sam moor
sam moor am 14 Nov. 2016
i am getting time 0,0,0...0 it should be 0.02,0.04....60 You can used this original roof-disp.out file. Its same file as rd.txt
Star Strider
Star Strider am 14 Nov. 2016
Bearbeitet: Star Strider am 14 Nov. 2016
I eliminated the first column from the ‘Di’ matrix, because that is the time vector to use for the interpolation.
Adding the ‘rd_new’ assignment will give you the complete, interpolated ‘rd’ matrix:
fidi = fopen('sam moor rd.txt','rt');
Dcell = textscan(fidi, repmat('%f',1,9), 'CollectOutput',1, 'Delimiter',' ');
D = cell2mat(Dcell);
L = size(D,1);
t = D(:,1);
ti = 0.02 : 0.02 : max(t); % Interpolation Vector
Di = interp1(t, D(:,2:end), ti, 'linear'); % Interpolated Data
rd_new = [ti' Di]; % Complete Interpolated ‘rd’ Matrix
EDIT Corrected to begin ‘ti’ at 0.02 rather than 0.00.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Image Analyst
Image Analyst am 14 Nov. 2016
I suggest you read the the FAQ on comparing floating point numbers and then use that or try a new function called ismembertol() to find out which rows match your desired times. One might think intersect() might work but because of the FAQ I referred you to, I have my doubts.

Community Treasure Hunt

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

Start Hunting!

Translated by