code: def get_matlab_value(val):
      
      import numpy as np
  
      # Extract each item of a list.
      if isinstance(val, list):
          return [get_matlab_value(v) for v in val]
  
      # Ignore leaf objects.
      if not isinstance(val, np.ndarray):
          return val
  
      # Convert user defined classes.
      if hasattr(val, 'classname'):
          out = dict()
          for name in val.dtype.names:
              out[name] = get_matlab_value(val[name].squeeze().tolist())
          cls = type(val.classname, (object,), out)
          return cls()
  
      # Extract struct data.
      elif val.dtype.names:
          out = MatlabStruct()
          for name in val.dtype.names:
              out[name] = get_matlab_value(val[name].squeeze().tolist())
          val = out
  
      # Extract cells.
      elif val.dtype.kind == 'O':
          val = val.squeeze().tolist()
          if not isinstance(val, list):
              val = [val]
          val = get_matlab_value(val)
  
      # Compress singleton values.
      elif val.size == 1:
          val = val.item()
  
      # Compress empty values.
      elif val.size == 0:
          if val.dtype.kind in 'US':
              val = ''
          else:
              val = []
  
      return val
docs: Extract a value from a Matlab file
  
      From the oct2py project, see
      https://pythonhosted.org/oct2py/conversions.html