# narginchk and varargin in MATLAB

3 vues (au cours des 30 derniers jours)
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
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

### Réponses (2)

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.
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

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 commentaireAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens
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