Arhn - архитектура программирования

Импорт Txt в Matlab, разные форматы строк

Мне нужно импортировать переменные из txt файла. Этот файл состоит из 3 основных частей.

А) Первоначальные заголовки, содержащие общую информацию

B) Заголовки-переменные, в каждом столбце

C) Числовые данные в каждом столбце

Как показано ниже:

Headlines - Headlines - Headlines - Headlines
Headlines - Headlines - Headlines - Headlines


#    A      |      B              C      |      D        | 
# ----------+----------------------------+---------------|  
#    1      |  0.0000E+00  +  0.0000E+00 |    0.0000     |
#    2/3    |  0.0000E+00 +/- 0.0000E+00 |    0.0000     |
#    4/5    |  0.0000E+00 +/- 0.0000E+00 |    0.0000     |
#    6      |  0.0000E+00  +  0.0000E+00 |    0.0000     |

Проблема в том, что начальные заголовки меняются каждый раз, поэтому мы не можем изначально объявить определенное количество строк, чтобы избежать их.

Как видите, у нас есть 2 разных формата строк. Таким образом, мы не можем написать определенный формат для каждой строки, и количество числовых данных в каждом столбце также меняется.

Я не могу этого сделать (Data=textscan(fid,'%s %f %s %f %s %f %s %f', 'headlines', 4)

У меня есть только два разных типа формата строки

Как я могу импортировать только числовые данные в каждую строку.

Пожалуйста помоги


Ответы:


1

Мой любимый метод — прочитать весь файл с помощью этой волшебной команды:

buf=textread(имя файла,'%s','разделитель','\n');

а потом разобрать. В этом случае кажется, что легко обнаружить строки данных, ища начальный #.

23.07.2013
  • Это было отлично. Я использовал эту команду и, написав в то время как для aj (1,1), я извлекаю номер строки, а затем использую: Data=textscan(fid,'%s %f %s %f %s %f %s % f', 'заголовки', j) и я загружаю свои переменные. Большое спасибо 24.07.2013

  • 2

    Вы можете применить textscan построчно, а не ко всему файлу. Например, на основе приведенного вами примера (и при условии, что вы написали функцию для определения формата данных из верхних строк):

    fileID = fopen(fileName);
    blockLine = 0;
    while ~feof(fileID)
        currLine = fgetl(fileID);
        % Check if we've reached the datablock
        if strcmpi(currLine(1),'#')
           blockLine = blockLine + 1;
        end
        % Use first line of datablock to determine textscan format
        if blockLine == 1
            textFormat = [insert format determination function];
        elseif blockLine > 2
            % Ignoring second line (dashes only)
            lineData = textscan(currLine,textFormat);
            [insert code to distribute data to larger variables]
        end
    end
    fclose(fileID);
    
    23.07.2013
  • Уважаемый Skipsh, большое спасибо за ваш ответ. Это было очень полезно 24.07.2013
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..