MATLAB Answers

Sum Object Properties: Signal

8 views (last 30 days)
I create my object using this class:
classdef myClass
properties
signal = [1 1 2 2 3 3];
end
end
The I instantiate N object of this class:
N = 1000;
for i = 1:N
obj(N) = myClass;
end
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?

  0 Comments

Sign in to comment.

Accepted Answer

Gabriele Bunkheila
Gabriele Bunkheila on 12 Jan 2018
I agree with the previous suggestion, another close variation being:
sum(vertcat(obj.signal))
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;
end
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)))
Thanks,
Gabriele.

  1 Comment

Nycholas Maia
Nycholas Maia on 12 Jan 2018
Brilliant solution Gabriele!
Thank you!

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!