Wpis z mikrobloga

Mirki, mam takie pytanie. Mam kod-skrypt w matlabie i jego część to 2 zmienne napisane pod sobą pionowo:

x
i
Co oznacza ten zapis? Myślałem, że to zwykła inkrementacja typu x++; jednak wyżej nad tym mam inkrementację

i = i+1;
Więc to raczej nie to. W takim razie co?
#programowanie #matlab
  • 11
@Atexor: fprintf w matlabie wypisuje nie tylko do pliku ale też na konsole.
a = [1.02, 3.04, 5.06];
fprintf('%d\n',round(a));

Wypisywanie do txt działa podobnie jak w C

x = 0:.1:1;
fileID = fopen('exp.txt','w');
fprintf(fileID,'%6s \n','x');
fclose(fileID);
@Akant:

edit: już nic. Zamiast parametru w+ dałem at. Już zapomniałem, że w/w+ nadpisuje w C :)

------------------------------------------------------------------------
Coś chyba nie do końca jak w C bo ciągle mi nadpisuje pierwszą linię w kodzie.

Mam w pętli while
results = fopen('save.txt', 'w+');
fprintf(results, '%d, %.3f, %.3f, %.3f, %.3f, %.5f \n', it, x(1), x(2), x(3), x(4), norm(grad(x)));
fclose(results);

A chciałbym kolejne wyniki w kolejnych liniach z iteracji. W ogóle czemu nie mogę
@Akant: Już to rozwiązałem. Zapomniałem, że w to nie "write" jako dopisywanie, tylko nadpisywanie.

A fopen/fclose poza pętlą nie działa. Nie mam pojęcia czemu. ctrl+x w pętli, ctrl+v wiersz nad while i matlab się pluje.
@Atexor: Nie wiem czy możesz podesłać kod, albo przynajmniej treść błędu.
Na pewno robisz ?:
plik = fopen
pętla
% Działania
fprintf
end
fclose
-----
Przykład:
fileID = fopen('example.txt','at+');

for k=1:1000
fprintf(fileID,'%f\n',randn());
end
fclose(fileID);
@Akant: Dokładnie tak miałem. Treść błędu to jest to co wyżej pisałem.

Error using fprintf Invalid file identifier. Use fopen to generate a valid file identifier.


Odpaliłem na nowo Matlaba. Stworzyłem nowy skrypt i wkleiłem zawartość starego. Ruszyło. Chyba bug, bo mimo ew. wyczyszczenia starych danych 'clear all' nie działało.