2015-06-25 3 views
1

Я пытаюсь использовать функцию textscan. Вот данные, которые я пытаюсь читать:пытается использовать «,» разделитель в октаве

"0", "6/23/2015 12:21:59 PM", "93.161", "95.911","94.515","95.917", "-5511.105","94.324","-1415.849","2.376","2.479" 
"1", "6/23/2015 12:22:02 PM", "97.514", "96.068","94.727","96.138","-12500.000","94.540","-8094.912","2.386","2.479" 

Регистратор данных Я использую путы кавычки все значения, даже если они являются числами. Если бы они были разделены запятыми, я мог бы просто использовать csvread. Вы можете увидеть некоторые из моих прокомментированных неудачных попыток. Вот код, который я пытался:

fileID = fopen('test3.txt'); 

%C = textscan(fileID,'"%f%s%f%f%f%f%f%f%f%f%f"', 'delimiter', '","'); 
C = textscan(fileID,'"%f","%s","%f","%f","%f","%f","%f","%f","%f","%f","%f"'); 
%C = textscan(fileID,'%s', 'delimiter', '"'); 
%C = strread(fileID, "%s %s %f %f %f %f %f %f %f %f %f", ","); 
fclose(fileID); 
celldisp(C) 

Если я запустить линию 3 я получаю:

C{1} = 
NaN 
NaN 
94.324 
NaN 
... omitted lines here ... 
NaN 
99.546 
NaN 

Если я бегу линии 4, 5, или 6, я получаю:

warning: strread: unable to parse text or file with given format string 
warning: called from 
    strread at line 688 column 7 
    textscan at line 318 column 8 
    test2 at line 4 column 3 
error: some elements undefined in return list 
error: called from 
    textscan at line 318 column 8 
    test2 at line 4 column 3 
+0

Не работает ли он? Вы получаете сообщение об ошибке? Опишите проблему, возникающую при запуске кода. – Dan

+0

Пожалуйста, измените ваш вопрос, чтобы добавить эти данные. – Dan

ответ

0

Вы хотите волшебное слово. Волшебное слово здесь не радует, это multipledelimsasone.

В принципе, вы хотите, чтобы и ", и , обрабатывались как символы-разделители. textscan ищет любого из символов разделителя, а не заданный порядок, поэтому «», «не делал то, что вы ожидали. Поворот multipledelimsasone на textscan обрабатывает любую комбинацию " и , в качестве единственного разделителя.

C = textscan(fileID,'%f%s%f%f%f%f%f%f%f%f%f', 'delimiter', '," ','multipledelimsasone',1); 

Без этой опции на то, что textscan думает, что происходит, много пустых значений; список разделителей не принимается за какой-либо порядок, а только список возможных разделителей. Так что, если он видит ",", он думает, что у вас есть три разделителя, между которыми нет ничего → два пустых значения → NaN.

+0

Спасибо @nkjt Я думаю, что это правильный путь, но он все еще не выводится правильно. Я попытался изменить несколько вещей, но все равно не повезло. Теперь я просматриваю синтаксис «multipledelimsasone». –

+0

Не повезло с линией nkjt. Я уверен, что есть что-то простое, что мне не хватает, но я не смог его найти. Есть ли другие предложения? –

Смежные вопросы