Using structures with Functions

5 Ansichten (letzte 30 Tage)
Jeremy Mercer
Jeremy Mercer am 1 Aug. 2022
Kommentiert: Jeremy Mercer am 1 Aug. 2022
I have a structure that I am using to simplify the workspace.
I have a structure called Condition defined so that I have multiple variables and each variable has an array for multiple conditions
Condition.Title(1) = {'test 1'};
Condition.Variable_a(1) = 1000
Condition.Variable_b(1) = 10
Condition.Title(2) = {'test 2'};
Condition.Variable_a(2) = 2000
Condition.Variable_b(2) = 20
such that
Condition =
Title: {'test 1' 'test 2'}
Variable_a: [1000 2000
Variable_b: [10 20]
I want to feed all the variables of a single condition into a function so I tried using this
Condition(1)
I hoped this would give me Title(1), Variable_a(1), and Variable_b(1) but it just gives me the entire stucture as if I had no index.
There are a number of variables so I don't want to enter each variable individually if I can avoid it
Is there a way to call all of the variables into a function with only a single column from the arrays?

Akzeptierte Antwort

Stephen23
Stephen23 am 1 Aug. 2022
Bearbeitet: Stephen23 am 1 Aug. 2022
Rather than defining a scalar structure containing arrays, it looks like you should be using a non-scalar structure:
For example:
Condition(1).Title = 'test 1';
Condition(1).Variable_a = 1000;
Condition(1).Variable_b = 10;
Condition(2).Title = 'test 2';
Condition(2).Variable_a = 2000;
Condition(2).Variable_b = 20;
Condition(1)
ans = struct with fields:
Title: 'test 1' Variable_a: 1000 Variable_b: 10
Condition(2)
ans = struct with fields:
Title: 'test 2' Variable_a: 2000 Variable_b: 20
Note that you can use comma-separated lists to obtain and assign data to the structure:
  1 Kommentar
Jeremy Mercer
Jeremy Mercer am 1 Aug. 2022
Thanks I didn't understand the difference between the two input method. This may work for me but I did have it in that form earlier and ran into issues. I'll have to reassess what that issue was and see if I can work around it as I believe a non-scaler structure will be easier to deal with.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Matt J
Matt J am 1 Aug. 2022
Bearbeitet: Matt J am 1 Aug. 2022
@Stephen23's answer might be what you are looking for, but if you need the struct in scalar form for some reason, then the attached utility will split the fields for one-time purposes.
Condition.Title(1) = {'test 1'};
Condition.Variable_a(1) = 1000;
Condition.Variable_b(1) = 10;
Condition.Title(2) = {'test 2'};
Condition.Variable_a(2) = 2000;
Condition.Variable_b(2) = 20;
ConditionArray=arrayify_struct(Condition);
ConditionArray(1)
ans = struct with fields:
Title: {'test 1'} Variable_a: 1000 Variable_b: 10
ConditionArray(2)
ans = struct with fields:
Title: {'test 2'} Variable_a: 2000 Variable_b: 20

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by