Struct contents reference from a non-struct array object

42 Ansichten (letzte 30 Tage)
Mukund
Mukund am 3 Aug. 2018
Kommentiert: Mukund am 3 Aug. 2018
(Not matching to prev questions on google).I have struct of struct of arrays. When any struct is empty while concatenating, the above error is displayed.
d=[s1.a.d;s2.b.d;s3.c.d]
when any struct a,b,c is empty above error is shown. How to redefine stacking to eliminate the error.

Akzeptierte Antwort

Guillaume
Guillaume am 3 Aug. 2018
"when any struct a,b,c is empty"
If a is empty (i.e. a = []), then it is not a structure, and a.d doesn't mean anything.
What would be the result of the concatenation anyway in this case.
  3 Kommentare
Stephen23
Stephen23 am 3 Aug. 2018
Bearbeitet: Stephen23 am 3 Aug. 2018
"If a is empty (i.e. a = []), then it is not a structure, and a.d doesn't mean anything."
MATLAB clearly allows empty structures:
>> a = struct('d',{})
a =
0x0 struct array with fields:
a
>> isempty(a)
ans =
1
So the logical that something empty cannot be a structure is incorrect.
"What would be the result of the concatenation anyway in this case."
The a.d syntax always returns a comma-separated list with as many elements as a has (in this case zero):
>> a.d
>>
So the empty structure does exist, and it (correctly) returns a comma-separated list with zero things in it. I would also expect a comma-separated list from a cell array to deliver the same result:
>> C = {}
C =
{}
>> C{:}
>>
So far no surprises for me. Comma-separated lists with zero members can easily be concatenated without any error:
>> b = struct('d',2);
>> [a.d,b.d]
ans =
2
Any problems are solely due to the data type, and have nothing to do with whether the array is empty or not. Fix the data class.
Mukund
Mukund am 3 Aug. 2018
Thanks Stephen, you spotted the mistake accurately.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by