MATLAB: Calculate mean using while and iteration

iterationmeanwhile

Hi,
I have data of ~3500×2. I want to calulate mean of second column for a particular condition in first column using 'while'.
let data (a, b) be like
0.5 1.8
0.6 1.5
0.9 1.8
1.0 1.5
1.1 1.4
1.2 1.4
1.5 1.6
1.8 1.2
2.1 1.2
2.3 1.3
2.4 1.5
2.6 1.8
2.9 2.0
3.0 3.0
3.12 3.2
3.15 1.9
3.16 1.7
3.18 2.2
I need to calculate mean of b, if a> 0.5 and a<1.5. Then increase 'a' by 1 and calculate mean of b (i.e for a > 1.5 and a<2.5) and so on. It may be a silly question but I am stuck with it. My code is
del=0.5;
k=1;
a(k)=1;
while(a(k) >(a(k)-del) && a(k)< (a(k)+del))
xn(k)=mean(b(k));
k= k+1;
a(k)=a(k)+1;
end
but it shows error Index exceeds array bounds.
Error in untitled (line 12)
a(k)=a(k)+1;
Thank you for your help.

Best Answer

So you want to calculate these values?
xn(1)=mean(b(a>0.5 & a<1.5));
xn(2)=mean(b(a>1.5 & a<2.5));
xn(3)=mean(b(a>2.5 & a<3.5));
etc?
You don't need a while loop for that:
a=[0.5 0.6 0.9 1.0 1.1 1.2 1.5 1.8 2.1 2.3 2.4 2.6 2.9 3.0 3.12 3.15 3.16 3.18];
b=[1.8 1.5 1.8 1.5 1.4 1.4 1.6 1.2 1.2 1.3 1.5 1.8 2.0 3.0 3.2 1.9 1.7 2.2];
del=0.5;
xn=zeros(1,ceil(max(a-del)));
for k=1:size(xn,2)
xn(k)=mean(b(a>(k-del) & a<(k+del)));
end