Setting the properties of an Object Array

10 Ansichten (letzte 30 Tage)
Nicholas Dinsmore
Nicholas Dinsmore am 1 Okt. 2012
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
args=num2cell(Array_of_property_values_to_assign);
[Object_Array(:).Property]=deal(args{:});
  3 Kommentare
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
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 MATLAB finden Sie in Help 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