No. of elements, mean and standard deviation of a field - conditions on other fields
1 view (last 30 days)
Show older comments
Hi. I am working with a structure array S (1 X 50,000) with 10 fields.
For example,
Here is the input,
S(1).f1=[10,70,30 40,50,60], S(1).f2=[100,20,50,60,70,140] and S(1).f3=[-10,20,-50,42,-70,140] ;
S(2).f1=[16,98,74,47,99], S(2).f2=[101,54,69,20,11] and S(2).f3=[17,-54,69,-20,37];
S(3).f1=...... , S(3).f2=..... and S(3).f3=...........;
S(4).f1=.... , S(4).f2=..... and S(4).f3=............;
.
.
S(i).f1=...., S(i).f2=.... and S(i).f3=............;
Let's say, I have a main condition: 50 < f1 <=100. Based, on this condition I want to calculate few values
I want to know the number of elements in field f1 which satisfy the condition 50 < f1 <=100.
I want to know the number of elements in field f1 whose corresponding f3 > 0.
I want to know the number of elements in field f1 whose corresponding f3 < 0.
I want the mean and sd of f2 elements whose corrseponding f3 > 0.
I want the mean and sd of f2 elements whose corresponding f3 < 0.
Is there a simple way to find the above mentioned parameters?
0 Comments
Accepted Answer
meghannmarie
on 4 Oct 2019
Edited: meghannmarie
on 4 Oct 2019
Maybe something like this?
f1 = [S.f1];
f2 = [S.f2];
f3 = [S.f3];
f1_cond1 = numel(f1(f1 > 50 & f1(f1 <=100)));
f2_idx = f3 > 0;
avg = mean(f2(f2_idx));
sd = std(f2(f2_idx));
5 Comments
meghannmarie
on 4 Oct 2019
Is this what you mean?
idx1 = f1 > 50 & f1 <=100;
idx2 = f3 > 0;
idx = idx1 & idx2;
num1 = numel(f1(idx));
avg1 = mean(f2(idx));
sd1 = std(f2(idx));
idx2 = f3 < 0;
idx = idx1 & idx2;
num2 = numel(f1(idx));
avg2 = mean(f2(idx));
sd2 = std(f2(idx));
More Answers (0)
See Also
Categories
Find more on String Parsing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!