Simplifying a "if" statement that checks there is at most one vector
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Marcelin Dierickx
el 15 de En. de 2019
Editada: Marcelin Dierickx
el 28 de En. de 2019
Hello,
I have got a code looking like this:
if (length(a)>1 && max([length(b) length(c)])>1) || (length(b)>1 && max([length(a) length(c)])>1) || (length(c)>1 && max([length(a) length(b)])>1)
fprintf('This code only allows one non-scalar variable at a time')
return
end
Which stops the scripts if two or more of a, b and c are vector. In my real code there are 8 variables so the "if" is really, really long.
I wanted to know if there is a way to write it another way to make the "if" shorter.
Thank you in advance for answering
0 comentarios
Respuesta aceptada
OCDER
el 15 de En. de 2019
a = [1 0 0 1];
b = [2 2 1 2];
c = 4;
if sum(~cellfun(@isscalar, {a b c})) > 1 %You have more than 1 non-scalar
fprintf('This code only allows one vector at a time.\n');
return
end
If your function is uses varargin, you could do this:
%Out = myFunc(a, b, c)
function Out = myFunc(varargin)
Out = [];
if nargin ~= 3
fprintf('Need 3 inputs.\n');
return
elseif sum(~cellfun(@isscalar, varargin)) > 1
fprintf('This code only allows one vector at a time.\n');
return
end
Más respuestas (0)
Ver también
Categorías
Más información sobre Introduction to Installation and Licensing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!