dongmy526 发表于 2006-10-15 23:24

编程出错

最近刚刚学习 matlab 编了一个程序急需用 可是用的时候出现问题要解决的问题是:输入数组X=[12,33,44,55,32,12,.....];求
b=Median((xi-xj)/(i-j))其中1<j<i<n 就是求所有(xi-xj)/(i-j)值中的中值,  我编的程序是
function =dmy(x);
q=0;
b=x;
a=length(x);
for j=2:a-2
    for i=j+1:a-1
      q=q+1;
      m(q)=(b(i)-b(j)/(i-j));
    end
end
w=m(q)
f=median(w)

结果不正确
问题好像出在,通过循环得出的多个(xi-xj)/(i-j)值,想付给一个新的数组w ,我也不知道我的程序那里出错了,当matlab程序中间计算的值想作为一个数组来输出以备用,应给怎样来处理,我这点很是不懂, 特此在此向各位高手请教,希望有好心人给与我帮助,感激不尽 !!!
请各位大虾给小弟点帮助 跪谢!!!

[ 本帖最后由 xinyuxf 于 2007-7-22 16:20 编辑 ]

eight 发表于 2006-10-16 10:19

原帖由 dongmy526 于 2006-10-15 23:24 发表
最近刚刚学习 matlab 编了一个程序急需用 可是用的时候出现问题要解决的问题是:输入数组X=[12,33,44,55,32,12,.....];求
b=Median((xi-xj)/(i-j))其中1 ...

改进的地方:
1. matlab与C等语言不同,matlab中数组下标从1开始;
2. w = m(q) 语句只把数组m最后一个元素赋值给w,所以要把最后两句改为一句: f = median(w)
3. median函数并非求数组的中值,我搜索了一下matlab的help,暂时还没有找到这样的函数,你试试medfilt1,就是中值滤波函数,看看有没有收获
4. 如果有需要完善程序,则最好减少使用循环

dongmy526 发表于 2006-10-16 15:55

谢谢楼上的帮助

小弟感谢   回去看看改善一下
页: [1]
查看完整版本: 编程出错