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
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?

採用された回答

Gabriele Bunkheila
Gabriele Bunkheila 2018 年 1 月 12 日
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 件のコメント
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