Setting the properties of an Object Array

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);

 Akzeptierte Antwort

Matt J
Matt J am 1 Okt. 2012

1 Stimme

args=num2cell(Array_of_property_values_to_assign);
[Object_Array(:).Property]=deal(args{:});

3 Kommentare

Nicholas Dinsmore
Nicholas Dinsmore am 1 Okt. 2012
Matt, That is great thank you. Is there a way to do that in a single line of code?
Matt J
Matt J am 1 Okt. 2012
Bearbeitet: Matt J am 1 Okt. 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 am 3 Okt. 2012
- or write an appropriate version of deal.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Grzegorz Lippe
Grzegorz Lippe am 11 Jun. 2013

0 Stimmen

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?

Kategorien

Mehr zu Creating, Deleting, and Querying Graphics Objects finden Sie in Hilfe-Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by