469 views (last 30 days)

I have to read a csv file. A column of this file has the next format:

2014/01/16 13:12:12.

Thanks for the help of Mischa Kim I have achieved to read in this format, so this not a problem.

So that my goal is to represent in X axis the time in seconds and Y axis the RSSI related to each second because as you can said me the problem if I represented the TIME_STAMP in the format 13:13:12 there're too many labels If I print all of them.

The First value of TIME_STAMP is 13:12:12 that corresponds to second 1. The Second Value of TIME_STAMP is 13:12:13 that corresponds to second 2. Until the last value...

If you don't understand my question tell me and I'll try to explain better!

Dou you Know a function or a way to calculate the TIME_STAMP in seconds with the aim to represent in x axis the time in seconds with each value.

I attach the csv file.

I would be grateful If you Know how can I do this! Thanks Mischa for your time! Greetings.

Mischa Kim
on 13 Feb 2014

If you are starting with date strings, use datenum to convert dates into number (= days) format. As an example:

d2s = 24*3600; % convert from days to seconds

d1 = d2s*datenum('13:12:12');

d2 = d2s*datenum('13:12:16');

display(d2-d1)

So simply loop through the date strings and subtract the first value.

Of course, if you already have dates in double format you would just do subtraction without conversion. It gets even simpler if you know that you have consistent 1 sec spacing between data points. You then just simply

tspan = 1:1:num_datapoints

Mischa Kim
on 13 Feb 2014

OK, try this:

T0Str = ['13:12:12';...

'13:12:13';...

'13:12:14'];

d2s = 24*3600; % convert from days to seconds

tspan = zeros(length(T0Str(:,1)),1);

for ii = 1:length(T0Str(:,1))

tspan(ii) = round(d2s*(datenum(T0Str(ii,:))-datenum(T0Str(1,:))));

end

data = rand(3,1); % just same sample data

plot(tspan,data)

set(gca,'XTick',tspan) % remove ticks between data points

Jos (10584)
on 17 Feb 2014

You can also use the dedicated function ETIME (with DATEVEC)

date1 = '2014/01/16 13:12:12'

date2 = '2014/01/16 13:12:13' % one second later

etime(datevec(date2),datevec(date1))

If you have a list of date/times

DT = {'2014/01/16 13:12:13' '2014/01/16 13:12:15' '2014/01/16 13:13:13' '2014/01/17 13:12:13' }

reftime = DT{1} ;

etime(datevec(DT), repmat(datevec(reftime),numel(DT),1))

Jos (10584)
on 17 Feb 2014

You can convert a N-by-M char array to a N-by-1 cell array of strings of length M, using CELLSTR

A = ['abcd' ; '1234' ; 'xxxx'] % a 3-by-4 char array

B = cellstr(A) % a 3-by-1 cell array of strings

% B{k} equals A(k,:)

Opportunities for recent engineering grads.

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

Start Hunting!
## 0 Comments

Sign in to comment.