Verfasst am: 30.04.2021, 17:48
Titel: Input-Parser, Größe von Matrix überprüfen mit default We
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.
valid_tile_size = @(x) isnumeric(x) && isequal(size(x),[12]); % 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
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 )
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
die Größe des Inputs manuell überprüfe und entsprechend verarbeite.
Einstellungen und Berechtigungen
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
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.