2016-06-24 2 views
0

У меня есть ниже функции:Matlab: Печать данных на определенной строке

function [] = Write(iteration) 
status=close('all'); 
nomrep=num2str(iteration); 
fid=fopen('ID.dat','a'); 
frewind(fid); 
for l=1:iteration 
    line=fgetl(fid); 
end 
fprintf(fid,[nomrep,' \n']); 
status=fclose(fid); 
end 

Я ожидаю, что Write(15) создает ID.dat и печатает 2 и 15 в последовательных линиях в начале 15-го строчной.

Но эти значения всегда печатаются в начале файла.

Даже я пробовал fgetl(fid) самостоятельно, а также заменил на цикл, пока цикл еще не работал.

Это связано с тем, что я должен заполнить строки перед этим с помощью какого-то фиктивного пространства? вдоль стороны этого, я выполнил

for i=1:5 Write(i); end

Который должен печатать от 1 до 5 в каждой строке, но даже это не работает.

+0

Интернет я нашел другой способ даже это не работает 'функция [] = Написать2 (итерация)' ' статус = близко ('все'); nomrep = num2str (итерация); fid = fopen ('ID.dat', 'w'); tline = fgets (fid); для l = 1: итерация tline = fgets (fid); конец fprintf (fid, [nomrep, '\ n']); status = fclose (fid); конец – Soyol

ответ

0

Эта линия проблема:

fid=fopen('ID.dat','w'); 

Everytime вы откроете файл, вы перезаписать предыдущее содержимое (то есть то, что делает 'w' аргумент). Измените 'w' на 'a' (для добавления), и ваш файл сохранит содержимое от одной записи до следующей.

+0

спасибо за ответ, но все же это не так, например, печать 8 в строке 8-го под вызовом функции 'Write (8)' – Soyol

+0

Кажется, что если файл пуст, то matlab не подсчитывает строки, поэтому Я думал о том, чтобы положить фиктивные алфавиты, скажем, «а» в каждой строке, а затем напечатать мой желаемый параметр в строке, которая мне нравится. Итак, я печатаю 'a' во всех 20 строках: 'iteration = 20;' 'fid = fopen ('ID.dat', 'w');' 'для k = 1: iteration' ' fprintf (fid, '\ n% s', 'a'); ' ' end' 'status = fclose (fid);' 'fclose ('all');' И теперь я вызываю функцию как Write (8), но опять же он не печатает 8 на 8-й строке и печатает его в конце файла ID.dat, хотя я уже сбросил указатель на строку 'frewind (fid);' – Soyol

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