Sum Object Properties: Signal

8 views (last 30 days)
I create my object using this class:
classdef myClass
signal = [1 1 2 2 3 3];
The I instantiate N object of this class:
N = 1000;
for i = 1:N
obj(N) = myClass;
I would like to sum the 'signal property' of all N object and return a vector with same size of 'signal property' (6 col x 1 row).
Like this:
result_vector = Sum(obj.signal);
The result should be like:
[X X Y Y Z Z]
Is there any optimized way to do this sum operation without using a FOR loop? How can I do that?

Accepted Answer

Gabriele Bunkheila
Gabriele Bunkheila on 12 Jan 2018
I agree with the previous suggestion, another close variation being:
If myClass was instead a System object (such as many filters and other signal processing algorithms found in MATLAB toolboxes), then you'd want to use cell arrays instead, via something like the following:
N = 1000;
obj = cell(N,1);
for i = 1:N
obj{i} = myClass;
In that case, I believe the syntax could get a bit more involved so I thought I'd include an example for reference:
sum(cell2mat(cellfun(@(c) c.signal, obj,'UniformOutput',false)))
  1 Comment
Nycholas Maia
Nycholas Maia on 12 Jan 2018
Brilliant solution Gabriele!
Thank you!

Sign in to comment.

More Answers (0)


Community Treasure Hunt

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

Start Hunting!

Translated by