Matlab从具有多空间分隔符的文件导入数据

时间:2013-01-04 18:34:04

标签: matlab import whitespace delimiter

我必须从文本文件中导入一些数据才能在Matlab中使用它:

1947/02/28   79,1
1947/03/31   79,1
1947/04/30   80,2

依旧......

我的问题是:我无法将其导入35x2矩阵(35只是一个随机数)或一个包含35x1矩阵(字符串或日期时间)的结构,另一方面包含35x1矩阵(双)

我没有找到像textscan,importdata ...这样的导入函数,它支持多个空格,否则它会尝试将数据拆分为“,”。

请帮助。

1 个答案:

答案 0 :(得分:1)

我们假设fid是您的文件句柄。

r = struct('date', {}, 'value', {});
n_line = 0;
tline = fgets(fid);
while ischar(tline)
    tok = regexp(tline, '(\d+/\d+/\d+)\s+(\d+),(\d)', 'tokens');
    if ~isempty(tok)
        n_line = n_line + 1;
        r(n_line).date = datenum(tok{1}{1});
        r(n_line).value = 0.1 * str2double(tok{1}{3}) + str2double(tok{1}{2});
    end
    tline = fgets(fid);
end

完成后不要忘记关闭fid。我假设您认为80,2类似于80.2的德语符号,不确定这是否正确。