тексты могут быть в MATLAB: читать значение NULL как NaN - PullRequest
2 голосов
/ 12 июля 2011

У меня есть файл .txt со следующими данными:

sampleF.txt -> (с разделителями табуляции)

MSFT    200    100
APPL    10    NULL
AMZN    20    40

Мне нужно прочитать эти данные, используя textscan.Я столкнулся с проблемой при чтении данных NULL.Используя treatasempty param, я могу прочитать его как 0. Но я хочу прочитать как NaN.Пожалуйста помоги!Спасибо!

fName = '.....\sampleF.txt'
[fid, message] = fopen(fName) ;
if fid < 0, disp(message), else
    datatxt = textscan(fid, '%q %d %d', 'Delimiter', '\t','treatAsEmpty','NULL');
    datatxt = [ datatxt {1} num2cell(datatxt {2}) num2cell(datatxt {3})] ;
    fclose(fid) ; 
end

%datatxt = { 'MSFT' [200] [100] ; 'AAPL' [10] [NaN] ; 'AMZN' [20] [40] } 

1 Ответ

6 голосов
/ 12 июля 2011

Проблема в том, что тип int32 не поддерживает значения NaN. Вместо этого прочитайте числа как двойники. то есть:

data = textscan(fid, '%s %f %f', 'Delimiter','\t', ...
           'treatAsEmpty','NULL', 'EmptyValue',NaN);
...