WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Wie lautet Befehl für leere Functionsvariablen

 

DeusRa
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 50
Anmeldedatum: 02.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2009, 11:19     Titel: Wie lautet Befehl für leere Functionsvariablen
  Antworten mit Zitat      
Hallo,

ich bastle gerade an einer Funktion, die natürlich Inputargumente erwartet.
Wie lautet denn der Befehl, wenn ein Inputargument leer gelassen wird und man dieses dann automatisch setzt.

Denn mit if ~isempty(startzeitH) geht das nicht !!!


Code:

function sec2timeString = sec2time( sekunden, startzeitH, startzeitM, startzeitS )
%SEC2TIME - Diese Funktion rechnet Sekunden in eine Uhrzeit um
%sekunden - Eingabe der umzurechnenden Sekunden in Zeit als Integer
%startzeitH - Eingabe der Stunden ab der gezählt werden soll (Integer)
%startzeitM - Eingabe der Minuten ab der gezählt werden soll (Integer)
%startzeitS - Eingabe der Sekunden ab der gezählt werden soll (Integer)
%startzeit - Zeit, ab der gezählt werden soll. Standard ist Mitternach
%00:00:00
%Uhr. Eingabe der Startzeit als Interger
% Also sekunden zu HH:MM:SS und Ausgabe in sec2timeString
% Bsp.:     sec2time(120, 0,0,0) --> 00:02:00
%           sec2time(150, 0,0,0) --> 00:02:30
%           sec2time(180, 23,57,0) --> 00:00:00
% Juli.2009 - Von R. W. - frei verwendbar

% Kontrollstruktur, falls die Mitternacht als Startzeit setzt falls Startzeiten nicht gesetzt sind
if ~isempty(startzeitH)
    H = startzeitH;
else
    H = 00;
end

if ~isempty(startzeitM)
    M = startzeitM;
else
    M = 00;
end
if ~isempty(startzeitS)
    S = startzeitS;
else
    S = 00;
end

%Berechnung der Uhrzeit in HH:MM:SS Format
    if sekunden>=3600
        H = floor(sekunden/3600);
        sekunden = mod(sekunden,3600);
    end

    if sekunden>=60
        M = floor(sekunden/60);
        sekunden = mod(sekunden,60);
    end

    S = sekunden - (floor(sekunden/3600) + floor(sekunden/60));
   
    H = num2str(H);
    if str2num(H)<10
        H = ['0',H];
    end
   
    M = num2str(M);
    if str2num(M)<10
        M = ['0',M];
    end
    S = num2str(S);
    if str2num(S)<10
        S = ['0',S];
    end
   
    %Ausgabevariable
    sec2timeString = [H,':',M,':',S];

end


 


Grüße
DeusRa
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 21.07.2009, 11:21     Titel:
  Antworten mit Zitat      
Moin,

das funktioniert über
Code:
varargin % kann eine variable Anzahl von Übergabeparametern entgegennehmen
oder
Code:
nargin % gibt die Anzahl der übergebenen Parameter zurück


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
DeusRa
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 50
Anmeldedatum: 02.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2009, 11:28     Titel:
  Antworten mit Zitat      
Danke schon mal....

aber wie setzt man das ein?

function bla = sec2time(sekunden, varargin)

und dann

if ~isempty(varargin{1})

?????
Private Nachricht senden Benutzer-Profile anzeigen
 
DeusRa
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 50
Anmeldedatum: 02.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2009, 11:43     Titel:
  Antworten mit Zitat      
Gerafft und Geschafft.....Danke
Habs eleganter gemacht.......

wer den Code haben mag, bitte schön:

Code:

function sec2timeString = sec2time( sekunden, varargin )
%SEC2TIME - Diese Funktion rechnet Sekunden in eine Uhrzeit um
%sekunden - Eingabe der umzurechnenden Sekunden in Zeit als Integer
%startzeitH - Eingabe der Stunden ab der gezählt werden soll (Integer)
%startzeitM - Eingabe der Minuten ab der gezählt werden soll (Integer)
%startzeitS - Eingabe der Sekunden ab der gezählt werden soll (Integer)
%startzeit - Zeit, ab der gezählt werden soll. Standard ist Mitternach
%00:00:00
%Uhr. Eingabe der Startzeit als Interger
% Also sekunden zu HH:MM:SS und Ausgabe in sec2timeString
% Bsp.:     sec2time(120, 0,0,0) --> 00:02:00
%           sec2time(150, 0,0,0) --> 00:02:30
%           sec2time(180, 23,57,0) --> 00:00:00
% Juli.2009 - Von R. Witek - frei verwendbar

% Kontrollstruktur, die Mitternacht als Startzeit setzt falls Startzeiten
% nicht gesetzt sind und diese korregiert
try
    H = varargin{1};
    M = varargin{2};
    S = varargin{3};
catch
    H = 0;
    M = 0;
    S = 0;
end


%Berechnung der Uhrzeit in HH:MM:SS Format
    if sekunden>=3600
        H = H + floor(sekunden/3600);
        sekunden = mod(sekunden,3600);
        if H>=24
            H = mod(H,24);
        end
    end

    if sekunden>=60
        M = M + floor(sekunden/60);
        sekunden = mod(sekunden,60);
    end

    S = sekunden - (floor(sekunden/3600) + floor(sekunden/60));
   
   
   
   
    H = num2str(H);
    if str2num(H)<10
        H = ['0',H];
    end
   
    M = num2str(M);
    if str2num(M)<10
        M = ['0',M];
    end
    S = num2str(S);
    if str2num(S)<10
        S = ['0',S];
    end
   
    %Ausgabevariable
    sec2timeString = [H,':',M,':',S];

end


 
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 21.07.2009, 12:04     Titel:
  Antworten mit Zitat      
Ich überprüfe in der Regel mit NARGIN wie viele Argumente übergeben wurden. Bei dir würde ich das dann so machen:
Code:
% try
%     H = varargin{1};
%     M = varargin{2};
%     S = varargin{3};
% catch
%    H = 0;
%    M = 0;
%    S = 0;
% end
if nargin<4
    H = 0;
    M = 0;
    S = 0;
else
    H = varargin{1};
    M = varargin{2};
    S = varargin{3};
end


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.