Info

# could anyone help me how to update the array values with respect to the following arrays

1 view (last 30 days)
jaah navi on 14 Oct 2019
Closed: MATLAB Answer Bot on 20 Aug 2021
A= [1.0119 1.6739;
2.8012 1.6381;
0.0752 0.1222;
1.3143 0.8189;
0.7956 0.8750;
1.8512 1.1499]
B =[0.9512 0.4314;
0.2490 0.8309;
0.3864 0.8246]
C= [ 3;
1;
2;
1;
2;
1]
I am having the above three matrices,I want to update B by considering the average values of A with respect to C.
For example,
In C i have 2nd,4th and 6th rows to be 1 which means i need to add the mentioned rows in A and find the average of it and it needs to be updated in first row of B.
in the same way,i need to add 3rd and 5th rows in A and it needs to get updated in second rows of B.
On doing this the updated B should be [1.9889 1.2023;
0.4354 0.4986;
0.3864 0.8246]

Alaster Meehan on 14 Oct 2019
B(1,:) = mean(A(C == 1,:));
B(2,:) = mean(A(C == 2,:));
B(3,:) = mean(A(C == 3,:));
Or you can put it in a for loop.
for ii = 1:3
B(ii,:) = mean(A(C == ii,:));
end
Cheers Alaster
Andrei Bobrov on 14 Oct 2019

Andrei Bobrov on 14 Oct 2019
Edited: Andrei Bobrov on 15 Oct 2019
a = (1:max(C))';
b = accumarray(C,1);
i = a(accumarray(C,1) > 1);
[lo,ii] = ismember(C,i);
AA = A(lo,:);
[iii,j] = ndgrid(ii(lo),1:size(B,2));
B(i,:) = accumarray([iii(:),j(:)],AA(:),[],@mean);