How can I use an empty matrix in a logical if statement?

42 visualizaciones (últimos 30 días)
K
K el 22 de En. de 2014
Respondida: Jackson el 20 de Jul. de 2017
Hello,
I have a program that evaluates mode shapes using the null space of an 8X8 matrix, "K". It works great when the null space exists, and I get an 8X1 vector for "u". However, for some values of "K" there is no null space, so for that "u" I get "Empty matrix: 8-by-0" and need to use a different method.
I tried to use
if eval(['u',num2str(ii),'==[]'])
to test if u is an empty matrix, but I get an error that tells me that "Matrix dimensions must agree". Is there any way to use an if statement that will run only if u is an empty 8x0 matrix?
(And yes, I know that eval + num2str is frowned upon, I didn't write that part! Apologies in advance!)
Thanks! Kaitlin

Respuesta aceptada

Bruno Pop-Stefanov
Bruno Pop-Stefanov el 22 de En. de 2014
Editada: Bruno Pop-Stefanov el 22 de En. de 2014
Use the isempty function to check if an array is empty:
if isempty(u)
% do something
else
% do something else
end
  1 comentario
K
K el 22 de En. de 2014
Thank you! That worked- thanks for directing me to the right command!

Iniciar sesión para comentar.

Más respuestas (1)

Jackson
Jackson el 20 de Jul. de 2017
When given a numeric array, if statements look at the first element and return true if it is non-zero. If the array is empty then this appears to be interpreted as false. Run the following:
if []
disp TEST1
end
if 0 : 10
disp TEST2
end
if 1 : 10
disp TEST3
end
a = [] ;
b = 1 : 10 ;
if a
disp TEST4
elseif b
disp TEST5
end
And only TEST3 and TEST5 are printed on the command line.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by