Azzera filtri
Azzera filtri

Wrong date while importing .csv

3 visualizzazioni (ultimi 30 giorni)
Ancalagon8
Ancalagon8 il 24 Ago 2018
Commentato: Ancalagon8 il 3 Set 2018
Having a problem when i import daily .csv files. More specifically, when i plot my xy data(x axis contains date and time stamp), in every different daily file, MATLAB shows todays date. Any ideas?
  5 Commenti
Stephen23
Stephen23 il 24 Ago 2018
Modificato: Stephen23 il 24 Ago 2018
@Sirius8: this is what one line of the file looks like:
00:00:0;0.0;0.00540500736377
Where is the date? Please show us which parts of that line contain date data.
Ancalagon8
Ancalagon8 il 24 Ago 2018
You are right. The date was not in the data but in the name of the csv

Accedi per commentare.

Risposta accettata

jonas
jonas il 24 Ago 2018
Modificato: jonas il 24 Ago 2018
The date is not automatically assigned because it's not in the data but in the name of the file. You could do something like this:
files=dir('folderpath~\*.csv');
for i=1:length({files.name})
date=files(i).name;
date=regexprep(date,'.csv','')
data=readtable(files(i).name);
t{i}=data{:,1}+datetime(date);
xy{i}=data{:,2:3}
end
Now you have two cell arrays, t and xy, where the former has all time data and the latter all other data.
  18 Commenti
jonas
jonas il 24 Ago 2018
Modificato: jonas il 24 Ago 2018
You're welcome! Note that you can just remove the curly braces from the t{i} if you want to achieve that. I put the results in a cell array as I figured you have several data sets that you want to load and store.
Also, don't use datetime as a variable name!!
Ancalagon8
Ancalagon8 il 3 Set 2018
In general it works. At some daily files i get this error in the line "tday=cell2mat(tday);"
"Error in cell2mat (line 83) m{n} = cat(1,c{:,n});"
files=dir('*2018-08-25.csv');
for i=1:length({files.name})
date=files(i).name;
date=regexprep(date,'.csv','');
din=importdata(files(i).name,';');
tday=cellfun(@(x) str2double(strsplit(x,':')),din.textdata,'uniformoutput',false);
tday=cell2mat(tday);
ti=hours(tday(:,1))+minutes(tday(:,2))+seconds(tday(:,3))+datetime(date);
xyi=din.data;
end

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Data Type Conversion in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by