2014-09-22 4 views
1

У меня есть большие файлы txt (~ 25 МБ). Он не открывается должным образом в excel и не работает, чтобы попытаться импортировать его.Импорт и сохранение больших текстовых данных в формат MATLAB

Используя следующие команды, я могу прочитать, что есть внутри ... но я не могу сохранить его как файл в формате Matlab для использования вместе с другими данными.

Пытаюсь:

fid = fopen('file.txt') 
while~feof(fid) 
tline = fgets(fid); 
disp(tline); 
end 

Я попытался как fgets() и fgetl(). Он читает весь файл. Но не сохраняет информацию в рабочем пространстве.

+0

Вы знаете, что fgets просто читает одну строку? поэтому tline будет содержать только ** последнюю ** прочитанную строку (которая очень часто пуста). – bdecaf

+0

да, я знаю ... и это проблема .... Я не использую обработку данных с помощью matlab ... тогда я попросил о помощи! Спасибо за ваш комментарий –

+0

Это нормально, чтобы попросить о помощи. Я просто сказал вам в * вашем * фрагменте, содержимое файла ** не ** хранится в переменной. Поэтому он не будет доступен. – bdecaf

ответ

1

Если переменная tline не существует в рабочем пространстве matlab после запуска этого кода, возможно, что вы запускаете ее в функции вместо скрипта. Кроме того, необходимо сохранить каждую строку, что вы читали в в массив какой-то так, что он не получает перезаписаны следующей строке вы прочтете в т. Е

function foobar(foo,bar) 
fid=fopen('file.txt') 
n = 0; 
while~feof(fid) 
    tline=fgets(fid); 
    disp(tline); 
    n = n + 1; 
    data{n} = tline; 
end 

Если вы вызываете его в функция, комментируя функциональную строку, заставит переменные сохраняться в рабочей области.

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

function foobar(foo,bar) 
fid=fopen('file.txt') 
n = 0; 
while~feof(fid) 
    tline=fgets(fid); 
    disp(tline); 
    n = n + 1; 
    data{n} = tline; 
end 
fclose(fid); 
save('filename.mat','data'); 

, а затем из рабочего пространства перспективы

load('filename.mat'); 

Примечание: Данные не могут должны быть клеткой. это зависит от типа данных в файле

+0

Это только сохраняет последнюю строку файла! –

+0

Я отредактирую свой ответ, дайте мне минуту – Trogdor

+0

, он вообще не работал ... он сохраняет матрицу нужного размера, но она полностью пуста ... –