top

Dies und Das

Dies und Das - Aktuelle Themen:

Hier gibt's ab und zu Tipps und Tricks zu verschiedenen (Computer)-Angelegenheiten, Kommentare oder sonst welche Gedanken von denen ich denke, sie in die Welt hinaus tragen zu müssen ;o)


Matlab-Tipp: Output der tic/toc Funktionen

Matlab

Wer in Matlab etwas aufwendigere Programme schreibt, kennt bestimmt die Vorzüge der tic und toc Funktionen: Diese dienen ganz einfach dazu, die Zeit zwischen ihren Aufrufen in Sekunden zu erfassen. Wird tic ausgelöst, beginnt ein Counter zu laufen, bei toc wird er angehalten und die verstrichene Zeit in Sekunden ausgegeben.

Das ist praktisch, um z.B. die Effizienz verschiedener Methoden auszuprobieren. Läuft ein Programm einmal mehrere Minuten oder gar Stunden, sieht man aber auch die Schwäche von tic und toc: Die Umrechnung von 1342567 Sekunden in eine vernünftige Zeit ist im Kopf nicht so einfach.

Deshalb habe ich eine kleine Funktion (gettime) geschrieben, die diese Umrechnung übernimmt und eine vernünftige Ausgabe erzeugt.

% function gettime: takes time in seconds and returns string with hours,
% minutes and seconds

function time = gettime(t)
    time = [num2str(floor(t/3600)) 'h ' ...
            num2str(floor(mod(t,3600)/60)) 'm ' ...
            num2str(floor(mod(mod(t,3600),60))) 's'];
end

Die Funktion kann z.B, folgendermaßen verwendet werden:

function myfunction()
    tic;
    display("Start expensive calculation...")
    % do some expensive calculations
    % ...
    % ...
    t = toc;
    display(['Done. (' gettime(t) ')']);
end

Output:

>> myfunction
>> Start expensive calculation...
>> Done. (1h 3m 46s)

Wenn ihr Programme schreibt, die mehrere Tage laufen, könnt ihr die Funktion natürlich erweitern (Tipp: 1 Tag hat 24 Stunden... ;o)).

 


bottom