Setting the properties of an Object Array

16 views (last 30 days)
The documentation and experimentation make it clear that I can do this to get the property values of an array of objects:
Array_of_property_values=[Object_Array(:).Property];
The question is how can I do the reverse without major use of subsasgn. For example I want to be able to do something like the following
[Object_Array(:).Property]=Array_of_property_values_to_assign;
I just can't seem to make that work. I have tried many different permutations but nothing seems to work. Does any on have any thoughts on how to make that work.
I have tried the following with no success:
[Object_Array(1:2).Property]=[10,20];
% suggestion from Stackoverflow
[Object_Array(:).Property]=deal(Array_of_property_values_to_assign);

Accepted Answer

Matt J
Matt J on 1 Oct 2012
args=num2cell(Array_of_property_values_to_assign);
[Object_Array(:).Property]=deal(args{:});
  3 Comments
Matt J
Matt J on 1 Oct 2012
Edited: Matt J on 1 Oct 2012
If Array_of_property_values_to_assign is already a cell array, then you can just do
[Object_Array(:).Property]=deal(Array_of_property_values_to_assign{:});
Otherwise, no, there is no way to do it in 1 line, except for fancy subsasgn methods.
per isakson
per isakson on 3 Oct 2012
- or write an appropriate version of deal.

Sign in to comment.

More Answers (1)

Grzegorz Lippe
Grzegorz Lippe on 11 Jun 2013
Hello,
this isn't working for me and I can't figure out what I'm doing wrong:
>> a = num2cell(1:3)
a =
[1] [2] [3]
>>[p(:).h_fP_star] = deal(a{:});
>>[p.h_fP_star]
ans =
3 3 3
Could anybody help?

Categories

Find more on Construct and Work with Object Arrays in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!