从CSV文件导入并绘制它们

36次观看(最近30天)
您好,我正在使用MATLAB 2019a并使用应用程序设计器,并且我在从CSV文件中导入日期并从Uable绘制它们有问题。这是我的代码
第一个按钮
[文件名,路径] = uigetfile(...
{'*.csv',,,,'文本文件CSV(*.csv)'},,“加载文件”,,,,'多选',,,,'在');
OneFile =可读取(文件名,“定界符”,,,,'\ t;',,,,“多重elimsasone”, 真的);
app.upauce1.data = onefile;
setappdata(0,'桌子',Onefile);
第二个按钮
t = getappdata(0,'桌子');
a = table2cell(t);
ydata1 = cellfun(@mean,a(:,3));
ydata2 = cellfun(@mean,a(:,7));
times = cellfun(@mean,a(:,2));
str = convertcharstostostrings(a(:,1));
datestring = datestr(str);
datenumber = datenum(datestring);
dates = dateTime(datenumber,“转换”,,,,'datenum',,,,'格式',,,,'dd.mm.yy hh:mm');
xData =日期 +次;
绘图(app.axes1,xdata,ydata2);
就是这样,将格式转换为3月2日至2月3日。我还尝试了table2timetable,但它认为带有日期的列是文本,因此它不起作用。因此,我的表格在单元格数组中,并包含字符。如何解决这个问题?我几乎尝试了所有内容,并浏览了这个常见问题解答,但我仍然没有发现这对我有帮助。
3条评论
约翰内斯·霍加德(Johannes Hougaard)
别客气。
我会在“答案”部分发表评论,因为不幸的是我填补了错误的位置。
如果您以后接受答案,我们将帮助清除未解决问题的积压。

登录发表评论。

接受的答案

约翰内斯·霍加德(Johannes Hougaard)
嗨,萨洛塔
据我所知,从您的问题中,问题出现了
datestring = datestr(str);
datenumber = datenum(datestring);
由于转换为datestring是不必要的,并且不保留正确的选项。
我的解决方案是跳过转换到数据仪并直接跳到datenum,同时设置Datenum函数的格式以从.csv匹配您的日期格式
看来正确的行是:
datenumber = datenum(str,'dd-mm-yyyy');
并保留剩余的代码。

更多答案(1)

彼得·珀金斯
彼得·珀金斯 2020年4月27日
Sarlota,我建议您使用DateTime,并且根本不使用Datenum或Datest。尤其不这样做
datestring = datestr(str);
datenumber = datenum(datestring);
dates = dateTime(datenumber,“转换”,,,,'datenum',,,,'格式',,,,'dd.mm.yy hh:mm');
只需将文本直接转换为DateTime。
但是,您的代码和文件中有一些非常有趣的事情。您正在使用明显的半分界线的文件中使用多个定界符。并且该文件似乎具有一个太多的标题,或者一个数据列太少。并且您使用的日期/时间格式不会数学我的文件是什么。结果,您的代码非常复杂 - 我认为您使自己的生活变得太难了。假设文件缺少列。我在每个数据行的末尾添加了一个半隆,相当于在文件中有一个空字段。(或者也许我应该在标题中删除“电流”;我不能说。)在您的MATLAB版本中,请尝试一下
>> t =可读取('matlab.csv',,,,“定界符”,,,,';'
t =
7×9表
时间当前的avg最小最大限度spctempwlencompLEDPOWER事件
___________________________________________________________________________________________
{'02 -03-2020 14:25:25.468972'} -92.368 -92.33 -92.382 -92.266 24.56 0 25000 NAN
{'02 -03-2020 14:25:29.470035'} -92.325 -92.334 -92.398 -92.279 24.56 0 25000 NAN
{'02 -03-2020 14:25:33.467210'} -92.361 -92.338 -92.379 -92.279 24.56 0 25000 NAN
{'02 -03-2020 14:25:37.477145'} -92.339 -92.354 -92.398 -92.296 24.56 0 25000 NAN
{'02 -03-2020 14:25:41.475953'} -92.348 -92.38 -92.437 -92.331 24.56 0 25000 NAN
{'02 -03-2020 14:25:45.478137'} -92.36 -92.398 -92.454 -92.347 24.56 0 25000 NAN
{'02 -03-2020 14:25:49.475570'} -92.425 -92.386 -92.434 -92.333 24.56 0 25000 NAN
>> t.time = dateTime(t.time,'格式',,,,'dd-mm-uuuu hh:mm:ss.sssss'
t =
7×9表
时间当前的avg最小最大限度spctempwlencompLEDPOWER事件
_______________________________________________________________________________________
02-03-2020 14:25:25.468972 -92.368 -92.33 -92.382 -92.266 24.56 0 25000 NAN
02-03-2020 14:25:29.470035 -92.325 -92.334 -92.398 -92.279 24.56 0 25000 NAN
02-03-2020 14:25:33.467210 -92.361 -92.338 -92.379 -92.279 24.56 0 25000 NAN
02-03-2020 14:25:37.477145 -92.339 -92.354 -92.398 -92.296 24.56 0 25000 NAN
02-03-2020 14:25:41.475953 -92.348 -92.38 -92.437 -92.331 24.56 0 25000 NAN
02-03-2020 14:25:45.478137 -92.36 -92.398 -92.454 -92.347 24.56 0 25000 NAN
02-03-2020 14:25:49.475570 -92.425 -92.386 -92.434 -92.333 24.56 0 25000 NAN
>> tt = table2timetable(t)
tt =
7×8时间表
时间当前的avg最小最大限度spctempwlencompLEDPOWER事件
_______________________________________________________________________________________
02-03-2020 14:25:25.468972 -92.368 -92.33 -92.382 -92.266 24.56 0 25000 NAN
02-03-2020 14:25:29.470035 -92.325 -92.334 -92.398 -92.279 24.56 0 25000 NAN
02-03-2020 14:25:33.467210 -92.361 -92.338 -92.379 -92.279 24.56 0 25000 NAN
02-03-2020 14:25:37.477145 -92.339 -92.354 -92.398 -92.296 24.56 0 25000 NAN
02-03-2020 14:25:41.475953 -92.348 -92.38 -92.437 -92.331 24.56 0 25000 NAN
02-03-2020 14:25:45.478137 -92.36 -92.398 -92.454 -92.347 24.56 0 25000 NAN
02-03-2020 14:25:49.475570 -92.425 -92.386 -92.434 -92.333 24.56 0 25000 NAN
您的代码似乎完全不匹配您的文件中的内容;当我运行它时,所有涉及CellFun的行似乎都没有任何意义。但是我认为您目前需要的只是
>>情节(tt.time,tt.current)
1条评论
Sarlota Duskova
Sarlota Duskova 2020年5月2日
您好,我使用了这个定界线'\ t;'因为我有错误和错误,所以我必须使用该定界符,当我使用它时,错误就消失了。然后我不知道该如何处理日期和时间,因此我将表转换为单元格,所以这就是我使用CellFun的原因。我是一个初学者,所以我需要学习很多东西,我正在尝试一些您可以在上面看到的东西,然后它可以工作,但是,是的,您的负担要容易得多,我不知道为什么我以前不这样做。我花了很多时间来弄清楚如何做到这一点,我做了我愚蠢的努力,您可以在上面看到。因此,谢谢您查看它,并帮助我看到解决方案可能会更容易。

登录发表评论。

s manbetx 845


释放

R2019A

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

开始狩猎!