我想导入一个txt文件,其中有一列的时间戳格式为HH:MM:SS
。我已经尝试了一些不同的东西,但没有运气。希望有人能帮助,我已经附上了我试图导入的表和我尝试使用的matlab代码。
% Import the data from the text file
data = readtable('data.txt');
% Converting the time values to datetime format
time_values = datetime(data(:, 1), 'InputFormat', 'HH:mm:ss');
% Separating the remaining values into a separate variable or column
other_values = data(:, 2:end);
色谱柱A | B栏 |
---|---|
00.00.01 | 13,05254116 |
00.00.02 | 13,05254116 |
00.00.03 | 13,05254116 |
00.00.04 | 12,8976404 |
00.00.05 | 12,8976404 |
00.00.06 | 12,74349886 |
00.00.07 | 12,74349886 |
00.00.08 | 12,59011097 |
00.00.09 | 12,43747122 |
寻求帮助解决我的问题
1条答案
按热度按时间pcrecxhr1#
如果你没有指定导入选项,
readtable()
会扫描文件并尝试自己解决很多问题。有时它会出错,除非你明确解释如何解释文本。如果你尝试直接导入文件,你会得到这样的结果:这显然是错误的。在格式化文本文件时有几个问题,这些问题阻碍了
readtable
顺利导入这样的文本文件:你的文件的第一个问题是每一行都会检测到逗号
,
,而readtable
会将其解释为列delimiter
。这就是为什么你尝试的直接导入最终会在错误的位置分割表。为了解决这个问题,我们可以手动指定分隔符。我假设在你的文件中分隔符是一个
space
字符。如果真实的的分隔符是一个制表符,请相应地调整代码(使用'\t'
而不是' '
)。首先,我们通过运行以下代码来获取
delimitedTextImportOptions
对象:您可以验证分隔符的自动检测是否确实错误:
所以我们用正确的分隔符替换它:
现在,如果您尝试使用此新选项读取文件,列分隔是正确的,但导入仍然有问题:
这是因为Matlab的默认小数点分隔符是点
.
,而不是许多欧洲国家使用的逗号,
。为了纠正这一点,我们将告诉Matlab最初将列导入为文本(然后我们将修改文本,以便Matlab可以将其转换为数字)。为此,我们需要修改另一个导入选项
VariableTypes
:我们将其替换为:
现在最后:
我们的列都正确导入了,但到目前为止只是作为文本导入。接下来,我们将替换每列中的非常规字符,并将它们替换为Matlab期望的当前类型(
datetime
和double
)。我们将使用函数strrep()
来实现这一点。然后将此文本转换为正确的时间/值就变得很简单了。我想是什么让你烦恼的是自动导入选项和你的特定文件格式之间的不匹配。现在解释一下,我不会逐行详细介绍代码,而是给予你导入这样一个文件的完整代码: