narginchk and varargin in MATLAB

1 vue (au cours des 30 derniers jours)
DM
DM le 20 Avr 2015
Commenté : Walter Roberson le 20 Avr 2023
I have come across PART of a code in MATLAB in a toolbox that I don't understand
elseif (txMode==2)
narginchk(7, 7);
numTx = varargin{1};
numRx = varargin{2};
switch numTx
case 2
numCSRRE_RB = 4*2*2;
case 4
numCSRRE_RB = 4*3*2;
end
I don't understand what `narginchk` and `varargin` are used for in this example, and why is that the output of `varargin{1}` would be either 2 or 4 (a conclusion I came up with when looking at the code after `switch`).
Thanks

Réponses (2)

James Tursa
James Tursa le 20 Avr 2015
narginchk(7, 7) throws an error if the number of input arguments is less than 7 or greater than 7 (i.e., the number of input arguments must be exactly 7 in this case or an error will be thrown).
varargin{1} is the first input argument.
varargin{2} is the second input argument.
Why the value of varargin{1} should be 2 or 4 would depend on the code in question and how it is called.

Lei
Lei le 20 Avr 2023
Modifié(e) : Walter Roberson le 20 Avr 2023
Recode
function p= marie (p,q)
narginchk[2,3]
disp('Yo, G!')
a=p+q
end
  1 commentaire
Walter Roberson
Walter Roberson le 20 Avr 2023
%if the user passes in no parameters then none of the parameters will exist
%if the user passes in too few parameters then variable p will not exist
%if the user passes in more than 3 parameters then there will be a 4th
%parameter and that should be rejected
%
%note that we are accepting a third parameter even though we do not do
%anything with it. This is because the original code permitted either 2 or
%3 inputs.
function p = marie (p,q,extra_ok,extra_not_ok)
if ~exist(p, 'var') || exist('extra_not_ok', 'var')
error('You must pass in either 2 or 3 inputs')
end
disp('Yo, G!')
a=p+q
end

Connectez-vous pour commenter.

Catégories

En savoir plus sur Argument Definitions dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by