calculate mean using while and iteration?
古いコメントを表示
Hi,
I have data of ~3500x2. 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.
2 件のコメント
David Wilson
2019 年 4 月 30 日
編集済み: David Wilson
2019 年 4 月 30 日
My code below is a bit ugly, but I think it does what you want:
cutoff = [0.5 1.5]; % band of interest
maxA = ceil(max(a))+0.5;
bmean = [];
for i=1:maxA
idx = find(a>cutoff(1) & a<cutoff(2));
bmean(i) = mean(b(idx));
cutoff = cutoff+1;
end
The means of column "b" are in variable bmean.
I note that you specified strict < as opposed to <= which may, or may not be what you really want.
Note that column a need not be sorted in increasing order.
Madan Kumar
2019 年 4 月 30 日
採用された回答
その他の回答 (1 件)
KSSV
2019 年 4 月 30 日
Why loop? YOu can use inbuilt in mean. Let a,b be your columns.
idx = a>0.5 & a<1.5 ;
mean(b(idx))
カテゴリ
ヘルプ センター および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!