Аномальный текст может читать - PullRequest
0 голосов
/ 30 апреля 2019
  1. Я пишу программу, которая будет читать файл, содержащий декартовы точки, величину и азимут.Система представляет движение шторма в массиве 348x348.
  2. Файл, который я читаю, содержит данные в следующем формате: X1, X2, Y1, Y2, RHO, THETA. Это комментируется в первой строкефайл.Объем данных может варьироваться от файла к файлу, поэтому он не является фиксированным числом.Файл подготовлен извне, и первые 4 параметра используются для получения двух последних параметров.Я прочитал сотни файлов с кодом, который я написал, и у меня не было проблем в прошлом, но данные, которые я получал, потеряли некоторые цифры в последних двух столбцах, поэтому я хочу прочитать файл и сгенерировать последнийдве колонки.Я могу позаботиться о математике, но моя проблема в том, что функция текстового сканирования пропускает числа, даже когда данные есть.Итак, я получаю смещение строк, в результате чего программа вылетает и горит, когда я пытаюсь вычислить последние два столбца.Мне нужна помощь, чтобы сделать две вещи: 1. прочитать каждую строку и получить все данные в правильном столбце.Если в 5-м и 6-м столбце нет данных, поместите NaN.Иногда нет данных, но есть «-».Я могу вычислить значения для этих столбцов позже в программе, а затем восстановить файл данных.
  3. Если в столбцах 1-4 нет данных, удалите всю строку в моем чтении (не вфайл данных), но в переменной я назначаю данные.Я работаю над диссертацией, и мне нужно решить эту проблему, так как я не могу доверять данным из этих файлов, и у меня есть тысячи таких дел.

  4. Я пробовал множествовещи, чтобы исправить эту проблему.Я проверил файл данных, чтобы увидеть, есть ли в нем какой-то странный символ.Я также чередовал различные команды в текстовом выражении вызова, но я иду по кругу.Это, наверное, очень просто, и я пропускаю что-то очевидноеЯ вставлю подпрограмму, которая сработала, но она все равно пропускает число без объяснения причин.Я включу один файл данных с 10 строками (1 комментарий + 9 данных).Я работаю с версией 10 Windows, MATLAB R2017b Студенческая версия с большинством наборов инструментов.

  5. Это код: файл% dotsread.m, который читает файлы точек имя файла = 'dots0102.txt';% data file

    FileID = fopen(filename, 'r');%open file
    %    
    formatSpec = '%f%f%f%f%f%f';%data format
    Avec = textscan(FileID, formatSpec,...
        'Delimiter', ',','HeaderLines',1,'EmptyValue',...
        NaN,'CommentStyle',{'-'}  ); %assign data to Avec  
    
    fclose(FileID); %close file
    %Assign data to variables
    starpx = Avec{1};
    starpy = Avec{2};
    stoppx = Avec{3};
    stoppy = Avec{4};
    rho = Avec{5};
    theta = Avec{6};
    
  6. Если в файле данных заполнены все столбцы и имеется N строк, то я ожидаю, что каждая из назначенных переменных будет иметь N строк.

    starpx = Avec {1};% Nx1, двойная starpy = Avec {2};% Nx1, двойная остановка = Avec {3};% Nx1, двойная остановка = Avec {4};% Nx1, двойная rho = Avec{5};% Nx1, двойной тэта = Avec {6};% Nx1, двойной

  7. Фактические результаты

    starpx = Avec {1};% Nx1, двойнойstarpy = Avec {2};% Nx1, двойная остановка = Avec {3};% Nx1, двойная остановка = Avec {4};% Nx1, двойная rho = Avec {5};% (N-1) x1, двойная тета= Avec {6};% (N-1) x1, double

  8. данные сдвинуты, но неожиданно.Если с кодом что-то явно не так, пожалуйста, дайте мне знать.Я могу отправить вам файл данных из 10 строк, чтобы вы могли видеть, что происходит.Спасибо

...