2011-12-31 3 views
0

У меня есть большой текстовый файл, содержащий данные, которые необходимо извлечь и вставить в новый текстовый файл. Возможно, мне нужно сохранить эти данные в массиве ячеек/матриц?Открытые текстовые файлы в matlab и сохранить их из matlab

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

У меня есть код, в котором он открывает текстовый файл, просматривает его и реплицирует данные и сохраняет его в другом текстовом файле, называемом «output.txt».

Проблема: похоже, что файл не сохраняется. Он просто показывает пустой массив в текстовом файле, например, " [] ". Исходный текстовый файл содержит только строку символов.

%opens the text file and checks it line by line. 
fid1 = fopen('sample.txt'); 
tline = fgetl(fid1); 
while ischar(tline) 
    disp(tline); 
    tline = fgetl(fid1); 
end 
fclose(fid1); 


% save the sample.txt file to a new text fie 
fid = fopen('output.txt', 'w'); 
fprintf(fid, '%s %s\n', fid1); 
fclose(fid); 

% view the contents of the file 
type exp.txt 

Куда я иду отсюда?

+0

Какая ОС? 32 или 64 бит? Эта страница полезная. Перейдите в раздел свопа увеличения http://www.mathworks.com/support/tech-notes/1100/1106.html –

+0

Это 64-битная система и для чего я устанавливаю размер файла подкачки, нестандартный размер, размер управляемой системы , или нет файла подкачки? – Jeiman

+0

, пожалуйста, представьте шаги, которые вы сделали. Вы писали код для открытия текстовых файлов, или вы использовали редактор для открытия текстового файла? –

ответ

5

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

Вместо этого используйте fopen и связанную с ним функцию, чтобы читать файл по строкам или char-by-char.

Например,

fid1 = fopen('sample.txt', 'r'); 
fid = fopen('output.txt', 'w'); 

tline = fgetl(fid1); 
while ischar(tline) 
    fprintf(fid, '%s\n', tline); 
    tline = fgetl(fid1);  
end 

fclose(fid1); 
fclose(fid); 

type output.txt 

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

+0

Мне нужна функция для открытия файла, а затем оттуда вызывать его в окне команд? Если да, то как я могу вызвать функцию в файле m? Спасибо – Jeiman

+1

Предлагаю вам написать весь свой код в m-файле и вызывать только его из командной строки. Таким образом, m-файл должен включать код, аналогичный тому, что я дал в примере, с добавлением другого файла fopen для выходного файла и логики записи в него внутри цикла. –

+0

В принципе, я хочу открыть файл, сохранить в ячейке или матричном массиве.Оттуда, я хотел бы манипулировать данными по мере необходимости. Затем сохраните управляемые данные в другом текстовом файле. Как мне это сделать? – Jeiman

2

Попробуйте использовать textread, он считывает данные из текстового файла и сохраняет его как матрицу или массив ячеек. В конце дня я предполагаю, что вы захотите, чтобы данные хранились в переменной, чтобы манипулировать им по мере необходимости. Как только вы закончите манипулировать, откройте файл с помощью fopen и используйте fprintf для записи данных в нужном вам формате.

+0

В принципе, я хочу открыть файл, сохранить в ячейке или матричном массиве. Оттуда, я хотел бы манипулировать данными по мере необходимости. Затем сохраните управляемые данные в другом текстовом файле. Как мне это сделать? – Jeiman

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