How to set mutually exclusive arguments in matlab?
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
cui,xingxing
am 16 Nov. 2020
Kommentiert: cui,xingxing
am 17 Nov. 2020
How to use the new "arguments" parameter qualifier to control mutually exclusive two(or more) parameters as function inputs?
for example:
function out = twoStats(x,y)
arguments
% If you have input x, you cannot input y
% If you have input y, you cannot input x
end
end
similar question:
1 Kommentar
Jon
am 16 Nov. 2020
I have been looking through the documentation. It appears that the input validation only operates on a single argument at a time. I don't see any mechnisim for making the validation of one input dependent upon another, e.g. must be empty if b is not empty. Obviously you could check this yourself, but I understand that you want to use the new argument feature to do this
Akzeptierte Antwort
Bruno Luong
am 16 Nov. 2020
function out = twoStats(x,y)
arguments
x = [];
y {MustBeExclusive(x,y)} = [];
end
% out = ...
end
function MustBeExclusive(varargin)
if sum(cellfun('isempty',varargin)) ~= 1
eid = 'XY:NotExclusive';
msg = 'X and Y must be exclusive.';
throwAsCaller(MException(eid,msg))
end
end
3 Kommentare
Steven Lord
am 17 Nov. 2020
>> twoStats([], 5) % x is the "placeholder" empty []
ans =
5
>> twoStats(1, []) % y is empty
ans =
[]
>> twoStats(1) % specify only x, let y take on its default value
ans =
[]
>> twoStats(1, 2) % neither is empty, this is not valid
Error using twoStats
Invalid argument at position 2. X and Y must be exclusive.
I would consider what the condition in MustBeExclusive should be carefully. If specifying both x and y as empties is allowed you should use == 0 instead of ~= 1. Should the following work? Currently it does not.
>> twoStats([], [])
Error using twoStats
Invalid argument at position 2. X and Y must be exclusive.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Entering Commands finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!