声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 900|回复: 2

[综合讨论] 请教一下如下控制程序应该如何写

[复制链接]
发表于 2010-1-5 20:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我有一个两列数据,第一列为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=[2,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,9,9,9,9,9,9,9,9];
y=[1,3,23,52,2,3,4,6,5,5,8,8,78,3,2,0,23,1,0,1,2,1,1.2,2.3,5];
xd=diff(x);
bbb=[];
j1=1;
for i1=1:length(xd)
    if xd(i1)==0
        bbb=[bbb,i1];
    else
        if ~isempty(bbb)
            bbb=[bbb,max(bbb)+1];
            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 编辑 ]
回复
分享到:

使用道具 举报

发表于 2010-1-5 22:20 | 显示全部楼层

回复 楼主 fanzhenjie 的帖子

试跑下, 怪!
Y值为9,Y(6),Y(7)没变化,而Y(8)=(6+5+5)/3!
发表于 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
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-20 16:32 , Processed in 0.229795 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表