Filter löschen
Filter löschen

Multiplication of two fields in a structure array

10 Ansichten (letzte 30 Tage)
SS
SS am 15 Jan. 2020
Kommentiert: SS am 16 Jan. 2020
Hi. I want to perform element wise multiplication of two fields in a struture array. The size of the fields is same throughout for a given Struct(i). When, I use the code below it gives the following error:
"Argument to dynamic structure reference must evaluate to a valid field name"
for i=1:length(Struct)
Struct(i).dx_dc1=(Struct(i).L1).*(cos(Struct(i).phi1));
Struct(i).dy_dc=(Struct(i).L1).*(sin(Struct.(i).phi1));
Struct(i).dx_dc2=(Struct(i).L2).*(cos(Struct(i).phi2));
Struct(i).dz_dc=(Struct(i).L2).*(sin(Struct(i).phi2));
end
  2 Kommentare
adeq123
adeq123 am 15 Jan. 2020
Hi,
Can you attach the Struct as well ?
Guillaume
Guillaume am 15 Jan. 2020
Are you sure that it's the exact code with no modification that you're running?
This code doesn't have any dynamic structure reference so it would be very surprising for you to get the error stated. Now, if you had something like:
Struct(i).(something) %brackets around something make it a dynamic struct ref
then yes, you could get this type of error.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Steven Lord
Steven Lord am 15 Jan. 2020
You made a typo on this line.
Struct(i).dy_dc=(Struct(i).L1).*(sin(Struct.(i).phi1));
There shouldn't be a period between Struct and (i) in the sin call.
Struct(i).dy_dc=(Struct(i).L1).*(sin(Struct(i).phi1));
  2 Kommentare
Guillaume
Guillaume am 15 Jan. 2020
Well spotted! This is indeed the dynamic struct ref.
SS
SS am 16 Jan. 2020
Thank you.

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