MATLAB: How to determine if one class is superior or inferior to another

classMATLABoop

Matlab uses class precedence to determine which methods are called. Given two class names, is it possible to determine the class precedence relationship between the two? The new metaclass structure contains some of this information for classdef classes, but lacks information about older-style classes and fundamental types.
I'd love to find (or be able to write) a generic utility that simply asks is 'class_a' superior to 'class_b'? Is this possible?

Best Answer

Instead of having 2 class names, you can do it if you have 2 objects of the class using something like the function below. Moreover, if your class constructors all support the no-argument case, you could generate an object from a class name as follows
obj=feval(className)
but I don't know if this would always be true for you.
function tf=issuperior(A,B)
%True if class(A) superior to class(B). Otherwise false.
try
stupidname_neverused(A,B);
catch ME
end
name=strrep(ME.message,'Undefined function ''stupidname_neverused'' for input arguments of type ','');
name=strrep(name,'''','');
name(end)='';
tf=strcmp(name,class(A));