fanzhenjie 发表于 2010-1-5 20:39

请教一下如下控制程序应该如何写

我有一个两列数据,第一列为X,第二列为Y,X已经按从i小到大排列好了,其中每一个相同的X值对应着很多Y值,现在我要做的工作是:对于每个相同的X值,我需要把Y值进行如下处理,处理的方法是:对于相同的X值对应着的Y值,将Y值每三个取均值赋给对应的Y值,即y(1)=mean(y(1:3)),当然最后有两个Y值取不到均值,就保持不变;然后对下一个X值,用同样的方法处理!
我写了一段程序,总感觉不对,因为经过处理后的第一个Y值应该为9,Y(6),Y(7)不应该变化,而Y(8)=(6+5+5)/3
clear;
clc;
x=;
y=;
xd=diff(x);
bbb=[];
j1=1;
for i1=1:length(xd)
    if xd(i1)==0
      bbb=;
    else
      if ~isempty(bbb)
            bbb=;
            for ii=min(bbb):max(bbb)-2
         y(ii)=mean(y(ii:ii+2));
            end
             bbb=[];
            j1=j1+1;
      end
   end
end

[ 本帖最后由 fanzhenjie 于 2010-1-5 21:42 编辑 ]

ChaChing 发表于 2010-1-5 22:20

回复 楼主 fanzhenjie 的帖子

试跑下, 怪!
Y值为9,Y(6),Y(7)没变化,而Y(8)=(6+5+5)/3!

maigicku 发表于 2010-1-6 14:47

LZ的程序不是对了么?哪里出错了?我运行完的结果跟LZ所要求的一样:

y =

Columns 1 through 11

    9.0000   26.0000   25.6667   19.0000    3.0000    3.0000    4.0000    5.3333    6.0000    7.0000   31.3333

Columns 12 through 22

   29.6667   27.6667    1.6667    8.3333         0   23.0000    1.0000         0    1.0000    2.0000    1.0000

Columns 23 through 25

    1.2000    2.3000    5.0000
页: [1]
查看完整版本: 请教一下如下控制程序应该如何写