Extracting data from the original data set

23 visualizzazioni (ultimi 30 giorni)
I have a data file named roof-disp.out 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.

Risposta accettata

Star Strider
Star Strider il 14 Nov 2016
Once again, the easiest way is to interpolate it:
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
rd_new = [ti' Di]; % Complete Interpolated ‘rd’ Matrix
  3 Commenti
sam moor
sam moor il 14 Nov 2016
something is wrong.. in a original data for time 0.02 the corresponding distance is -0.00864 (for your reference I only compare last column distance data) but for rd_new data for time 0.02 the corresponding distance was -0.0017 ( last column data). So something is wrong
Star Strider
Star Strider il 14 Nov 2016
I’d forgotten you were starting at 0.02 rather than 0.00.
This works:
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

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by