MATLAB: Math operations on array of objects

array object classoop

  1. I have a class A with property b.
  2. I make an n-by-m array with objects of class A
  3. I would like to, for instance, find the mean of all the rows.
The below code shows implementation of class A
classdef A < handle
properties
b = rand
end
end
The below script shows how I would ideally like the operation of finding the mean to look like
a(2,5) = A
mean(a.b, 1);
This does not work however, and the only way I have found to make this work so far is shown below:
a(2,5) = A
mean = [a(1,:).b] + [a(2,:).b] / 2;
This does not look pretty and of course, if one want's to generalize to the n-by-m case, you need a loop to make this work.
Is there a way to achieve this without using a loop, and instead do something like the first example?

Best Answer

If each A.b contains one value, you could use arrayfun to generate a matrix and then do the operation. It's not elegant, but at least it provides a standardized way to do some operations.

mean_val = mean(arrayfun(@(a) a.b,A));