matlab中如何根据一个二维数组的列,求另一列的均值

有一个二位数组,x=[2 3
3 6
5 9
6 9
6 13
8 9
10 9
11 3 ]根据第一列的数值间隔3, 输出第二列的所在行的对应的列向量的平均值 即:第一列中2---5 之间
所对应的是3,6,9,求均值是6 。 第一列中5---8之间所对应的是9,9,13,9 求均值是10 。 第一列中8---11之间所对应的是9,9,3 求均值是7 大神求助啊,可能会用到两个for语句,这个我就不会了,麻烦您指教一下。

第1个回答  推荐于2016-04-28
x =[2 3 5 6 6 8 10 11;3 6 9 9 13 9 9 3];
x1=x(1,:);
x11=x1;
x2=x(2,:);
d=x(1,1);
for i=1:6
f1=find(x1<=d+3);
f2=find(x1<d+3);
if size(f1,2)==0
break
end
x1(f2)=1000;
jz(i)=mean(x2(f1));
d=d+3;
disp(num2str([x11(f1);x2(f1)]'));
disp(['对应的均值是: ' num2str(jz(i)) char(13)]);
end追问

请问,有办法分别将第二列均值放到一个数组中吗?
大神,指教一下吧,谢谢

追答

jz 应该就是你要的!

追问

大神,你真厉害,但是有些地方,我还是看不太懂,你能给分析一下吗?
for i=1:6
这个是什么意思呢?
f1和f2表示什么意思呢?
if size(f1,2)==0这个是什么意思啊
disp(num2str([x11(f1);x2(f1)]'));
disp(['对应的均值是: ' num2str(jz(i)) char(13)]);
还有这两个也不太清楚,

追答

for i=1:6

这个后面的6 实际上只要相对大就行!

f1 是用来查找x1中大于等于d且小于等于d+3的数据位置

f2 是用来查找x1中小于d的数据位置

if size(f1,2)==0 表示如果x1中没有大于等于d且小于等于d+3数据则表示数据操作完毕,实际上这个地方如果处理特殊数据的时候会出错,你自己可以修改好!

本回答被提问者和网友采纳