Sum Object Properties: Signal

3 ビュー (過去 30 日間)
Nycholas Maia
Nycholas Maia 2018 年 1 月 11 日
コメント済み: Nycholas Maia 2018 年 1 月 12 日
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?


Gabriele Bunkheila
Gabriele Bunkheila 2018 年 1 月 12 日
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 件のコメント
Nycholas Maia
Nycholas Maia 2018 年 1 月 12 日
Brilliant solution Gabriele!
Thank you!


その他の回答 (0 件)


Community Treasure Hunt

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

Start Hunting!

Translated by