MATLAB Answers

0

How can i return a value based on mutliple fields?

Asked by Emma Kuttler on 10 Nov 2019 at 22:14
Latest activity Commented on by Emma Kuttler on 11 Nov 2019 at 16:43
I have a structure named N2, with three fields - Components, PowerConsequences, and ICTConsequences.
>>N2 =
struct with fields:
Components: [43660×2 double]
PowerConsequences: [43660×1 double]
ICTConsequences: [43660×1 double]
>> fieldnames(N2)
ans =
3×1 cell array
{'Components' }
{'PowerConsequences'}
{'ICTConsequences' }
The components field is a vector with two columns, so N2.Components returns a list like this. It describes the combination of 2 components in a system, and the other fields describe effects.
290 296
291 292
291 293
291 294
291 295
291 296
292 293
And so on. How do i return a value in the field PowerConsequences or ICTConsequences based on two specific values in the field Components - ie for the values (290,296) in the Components field, how do i return the value in the PowerConsequences Field?

  0 Comments

Sign in to comment.

1 Answer

Answer by Shubham Gupta on 11 Nov 2019 at 3:04
Edited by Shubham Gupta on 11 Nov 2019 at 3:05
 Accepted Answer

Try:
id = find(N2.Components(:,1) == 290 & N2.Components(:,2) == 296);
PowerConsequences_out = N2.PowerConsequences(id);
ICTConsequences_out = N2.ICTConsequences(id);
I hope it helps.

  1 Comment

What if i wanted to return the average of everything with a specific value in the components field? Like the value in the field PowerConsequences for all combinations of components that contain component 1? Would it be something like this?
>> mean(id = find(N2.Components(:,1)=1)
My end goal is to take the average of all PowerConsequences for all combinations that include Component 1, Component 2, etc

Sign in to comment.