Загрузка массива строк из файла - PullRequest
1 голос
/ 21 ноября 2019

Как я могу загрузить массив строк в Octave из файла csv или txt? Файл имеет формат, показанный ниже. При использовании

dlmread("TimeData.csv", ",")

это приводит к бесполезным данным, таким как 2019 - 11i.

`TIME`
    2019-11-08-13.27.03 +0100
    2019-11-08-13.27.08 +0100
    2019-11-08-13.27.13 +0100
    2019-11-08-13.27.18 +0100
    2019-11-08-13.27.23 +0100

Ответы [ 2 ]

1 голос
/ 21 ноября 2019

Из документации на dlmread (выделено мной):

Чтение числовое данные из текстового файла файл который использует разделитель sep между значениями данных.

Вместо этого используйте textscan (в зависимости от вашей ОС, возможно, потребуется изменить разделитель):

fid = fopen('TimeData.csv');
C = textscan(fid, '%s', 'Delimiter', '\n')
fclose(fid);

Вывод:

C =
{
  [1,1] =
  {
    [1,1] = 2019-11-08-13.27.03 +0100
    [2,1] = 2019-11-08-13.27.08 +0100
    [3,1] = 2019-11-08-13.27.13 +0100
    [4,1] = 2019-11-08-13.27.18 +0100
    [5,1] = 2019-11-08-13.27.23 +0100
  }
}

Надеюсь, это поможет!

0 голосов
/ 08 декабря 2019

Аналогично текстовому сканированию, за исключением того, что сохраняет пустые строки.

function [textLines] = readFile (file_in_dir)
    if nargin != 1 || isempty(file_in_dir)
        return
    end

    if exist(file_in_dir, "file")
        fid = fopen(file_in_dir, "r");
        data = char(fread(fid));
        fclose(fid);

        if !strcmp(data(end), "\n")
            data = [data ; "\n"];
        end

        data(data == "\r") = [];
        newlines = [0, [1 : rows(data)](data' == "\n")];

        textLines = cell(1, columns(newlines) - 1);
        for i = 1 : columns(newlines) - 1
            textLines{i} = data(newlines(i) + 1 : newlines(i + 1) - 1)';
        end
    else
        textLines = {};
    end
end
...