【发布时间】:2018-10-17 08:51:41
【问题描述】:
我正在将数据从 Excel 导入 MATLAB。我在 Excel 中的数据是 [h]:mm:ss 格式,但是在导入到 MATLAB 后数据变成了十进制数。
有没有办法在 MATLAB 中将此数据转换回[h]:mm:ss 格式?
一些例子:
21:45:05 equals 0.906307870370370
21:14:31 equals 0.885081018518519
213:17:56 equals 8.88745370370370
我理解转换是 24 小时的倍数,以秒、分钟或小时为单位 - 这意味着 12:00:00 = 0.5。但我不明白如何将数据转换回来,即 0.75 变为 18:00:00 等?
我已尝试New_Nun(i,j) = datestr(nun(i,j),'HH:MM:SS'); 进行此转换,但出现此错误 -
由于左侧的索引与右侧的大小不兼容,无法执行分配。
这是因为我的nun 变量包含NaN 吗?
【问题讨论】:
-
我认为你的命令的 RHS 运行,但它给出了一个字符串,我会说它不适合
New_Nun(i,j)。 RHS 是否运行,如果运行,结果如何? -
@Adriaan RHS 运行 - 直到我到达 NaN 时它停止 - 所以你是说 New_Nun 的定义需要更改为 Cell 变量?
-
啊,如果它运行良好直到遇到
NaN值,只需检查并丢弃那些,例如nun(isnan(nun))=[] -
请注意,您使用了错误的日期时间格式字符串...
HH:MM:SS是24hr hours : 2 digit month : 2 digit factional second!您可能想要更多类似HH:mm:ss的东西,请阅读文档!另请注意,Matlab 的日期数字(十进制值)定义为“从 0000 年 1 月 0 日开始的天数”,我不确定您的 Excel 导入数据是否与此相对应。 -
@Adriaan 通过
isnan(nun(i,j)) == 0和一个 if 循环完成了这项工作——尽管你的解决方案更简洁,谢谢!
标签: excel matlab datetime datetime-format