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

Input-Parser, Größe von Matrix überprüfen mit default We

 

Knygs
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 26.03.15
Wohnort: ---
Version: 2015b, 2017a, 2021a
     Beitrag Verfasst am: 30.04.2021, 17:48     Titel: Input-Parser, Größe von Matrix überprüfen mit default We
  Antworten mit Zitat      
Hallo zusammen,

ich stehe vor folgendem Problem:
Ich würde gerne eine Matrix, hier Größe (1,2) einer Funktion über einen Inputparser übergeben. Falls die Voraussetzungen nicht erfüllt sind (numeric und/oder Größe) soll der default Wert benutzt werden.

Code Schema dazu:

Code:
function f = myfunc(input_1, varargin)

 default_tile_size = [200, 200];
 
 p = inputParser;
 
 valid_tile_size = @(x) isnumeric(x) && isequal(size(x),[1 2]); % Hier check ob tile_size numeric und size (1 2) hat
 
 addRequired(p,'input_1');
 addOptional(p,'tile_size',default_tile_size,valid_tile_size);  % Falls Voraussetzungen für tile_size nicht gegeben --> default_tile_size
 
 parse(p,input_1,varargin{:});
 tile_size = p.Results.tile_size;  % falls Eingabe zb tile_size = [22] oder gar nichts soll nun hier [200,200] draus werden
 
 % Do stuff
 f = input_1;
 
end


Allerdings bekomme ich, auch bei richtigen Eingabe-Werten, folgende Fehlermeldung:

The value of 'tile_size' is invalid. Too many output arguments.

Ich habe bis jetzt nicht viel Erfahrung mit inputparsern und mich dabei an folgenden Seiten orientiert:

https://de.mathworks.com/help/matlab/ref/inputparser.html

https://de.mathworks.com/help/matla.....validation-functions.html

Google konnte mir bis jetzt leider nicht weiterhelfen. Vielleicht weiß jemand von euch bescheid ob und wie das möglich ist Smile

vielen Dank,
Tobi
Private Nachricht senden Benutzer-Profile anzeigen


Knygs
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 26.03.15
Wohnort: ---
Version: 2015b, 2017a, 2021a
     Beitrag Verfasst am: 02.05.2021, 12:27     Titel:
  Antworten mit Zitat      
Ich habe gerade festgestellt, dass ich oben die falsche Fehlermeldung kopiert habe und es
The value of 'tile_size' is invalid. It must satisfy the function: @(x)isnumeric(x)&&isequal(size(x),[1,2]).
war, bei falscher Größe der Matrix. Und bei richtiger Größe keine Fehlermeldung. (Das habe ich im Eifer des Gefechts wohl übersehen Confused )

Ich habe mittlerweile auch festgestellt, dass ich wohl das Verhalten der Verifikationsfunktion falsch aufgefasst habe. Ich dachte, dass bei einem Übergabe-Wert, der nicht den Bedingungen entspricht, der Default-Wert übernommen wird. Das ist nicht so. Bei falscher Eingabe wird eine Fehlermeldung ausgegeben und nur falls überhaupt kein Input vorhanden ist wird der Default-Wert benutzt.

In meinem Fall habe ich das nun so gelöst, dass ich lediglich überprüfe ob
Code:
numerisch ist (falls kein Input wird hier der richtige Default gesetzt) und anschließend über
Code:
size(p.Results.tile_size)
die Größe des Inputs manuell überprüfe und entsprechend verarbeite.
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.