声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1556|回复: 14

[编程技巧] 求助 我编的程序出现循环次数不对

[复制链接]
发表于 2008-12-6 15:30 | 显示全部楼层 |阅读模式

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

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

x
for i=2:n
xf(1,i)=l*x(1,i)+(1-l)*xf(1,i-1);
vf(1,i)=w*(x(1,i)-xf(1,i-1))*(x(1,i)-xf(1,i-1))+(1-w)*vf(1,i-1);
df(1,i)=q*(x(1,i)-x(1,i-1))*(x(1,i)-x(1,i-1))+(1-q)*df(1,i-1);
R(i)=(1-l)*vf(1,i)/df(1,i);
end
最后以为R(i)能出现n次,结果 不止n次, 不知道什么原因:@Q
有老师知道吗,谢谢指教

[ 本帖最后由 prince00840 于 2008-12-6 15:45 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-12-6 15:42 | 显示全部楼层
你这个程序能运行?当i=1时,xf(1,1)=l*x(1,1)+(1-l)*xf(1,0);xf(1,0)不可能存在,matlab矩阵下标是从1而不是0开始的。
 楼主| 发表于 2008-12-6 15:46 | 显示全部楼层
不好意思啊,假设xf(1,1)、vf(1,1)、df(1,1)已知;
l、w、q也是已知(大于零小于一)
发表于 2008-12-6 16:23 | 显示全部楼层
暂时看不出你的程序有什么问题,程序结束后R的维数不是1×n的?
发表于 2008-12-6 16:27 | 显示全部楼层
楼主的程序错误很多! 不是直接复制的吧!
发表于 2008-12-6 17:45 | 显示全部楼层
回复 楼主 prince00840 的帖子
不太明白你的意思,循环是n-1次,R也应该是n-1次吧
 楼主| 发表于 2008-12-7 09:49 | 显示全部楼层
:@( 目的是1xn维的,结果不是

我怕不知道哪里错了
for i=2:n
xf(1,i)=l*x(1,i)+(1-l)*xf(1,i-1);
vf(1,i)=w*(x(1,i)-xf(1,i-1).^2+(1-w)*vf(1,i-1);
df(1,i)=q*(x(1,i)-x(1,i-1)).^2+(1-q)*df(1,i-1);
R(i)=(1-l)*vf(1,i)/df(1,i);
end
发表于 2008-12-7 11:06 | 显示全部楼层

回复 楼主 prince00840 的帖子

xf(1,i)=l*x(1,i)+(1-l)*xf(1,i-1);
不知道上下文的情况下,看这句挺奇怪的。既然只要1*n,那就用
xf(i)=l*x(i)+(1-l)*xf(i-1);就可以。

还有就是我觉得楼主需要自己设置断点,跟踪变量调试,看究竟是哪里错了。
发表于 2008-12-7 13:02 | 显示全部楼层
搞不懂楼主是什么意思,你两次给出的代码都有很明显的错误,根本不可能运行,不知道你是怎么得到结果的。你最好是把你运行的matlab原始程序复制粘贴过来,另外说明下x,l,q,w的维数,最好给出值。
 楼主| 发表于 2008-12-8 08:48 | 显示全部楼层
l,q,w 是系数,0<  l,q,w <1
发表于 2008-12-8 09:14 | 显示全部楼层
clear
clc
%~~~~~~~~~~~~~~~~~~~~~~
% 假设
n=10;
xf=[1,zeros(1,9)];
x=ones(1,10);
vf=[1,zeros(1,9)];
df=[1,zeros(1,9)];
l=0.1;
w=l;
q=l;
R=[1,zeros(1,9)]; % R如果不预先假定,第一个值为零
%~~~~~~~~~~~~~~~~~~~~~~

for i=2:n
xf(1,i)=l*x(1,i)+(1-l)*xf(1,i-1);
vf(1,i)=w*(x(1,i)-xf(1,i-1).^2+(1-w)*vf(1,i-1)); % 原程序此处少以括号,我在最后添了一个括号
df(1,i)=q*(x(1,i)-x(1,i-1)).^2+(1-q)*df(1,i-1);
R(i)=(1-l)*vf(1,i)/df(1,i);
end
 楼主| 发表于 2008-12-8 10:06 | 显示全部楼层
:hug: XIEXIExiexie谢谢各位老师了,我好感动啊,这么多帮忙的
ydlcus    friendchj   sogooda    :handshake 非常感谢啊:loveliness:
发表于 2008-12-8 11:38 | 显示全部楼层
也不知道你问题解决没有,希望这么多人没白忙活。
现在还没想明白你怎么会碰到这样的问题
 楼主| 发表于 2008-12-8 12:48 | 显示全部楼层
我本来打算看看一组数的稳态检测
x=[359.514  358.353  359.514  358.585  361.594  361.132  356.02  361.709  359.629  365.034];
l=0.2;w=0.1;q=0.1;
xf(1,1)=x(1,1);
xf(1,2)=l*x(1,2)+(1-l)*x(1,1);
vf(1,2)=w*(x(1,2)-xf(1,1))*(x(1,2)-xf(1,1));
df(1,2)=q*(x(1,2)-x(1,1))*(x(1,2)-x(1,1));
for i=3:10
xf(1,i)=l*x(1,i)+(1-l)*xf(1,i-1);
vf(1,i)=w*(x(1,i)-xf(1,i-1)).^2+(1-w)*vf(1,i-1);
df(1,i)=q*(x(1,i)-x(1,i-1)).^2+(1-q)*df(1,i-1);
R(i)=(1-l)*vf(1,i)/df(1,i);
end
i=3:10
plot(i,R(i));
通过R看看x的稳定性,不知道对不对呵呵

[ 本帖最后由 prince00840 于 2008-12-8 12:57 编辑 ]
 楼主| 发表于 2008-12-25 11:30 | 显示全部楼层

看一组数的稳定性

我打算检测一组数,这组数可以有在线数据采集得到,要检测这按照时间序列得到的数稳定程度

x=[359.514  358.353  359.514  358.585  400.594  361.132  356.02  361.709  359.629  365.034];
l1=0.2;l2=0.1;l3=0.1;
xf(1,1)=x(1,1);
xf(1,2)=l1*x(1,2)+(1-l1)*x(1,1);
vf(1,2)=l2*(x(1,2)-xf(1,1))*(x(1,2)-xf(1,1));
df(1,2)=l3*(x(1,2)-x(1,1))*(x(1,2)-x(1,1));
n=length(x);
for i=3:n;
xf(1,i)=l1*x(1,i)+(1-l)*xf(1,i-1);
vf(1,i)=l2*(x(1,i)-xf(1,i-1)).^2+(1-l2)*vf(1,i-1);
df(1,i)=l3*(x(1,i)-x(1,i-1)).^2+(1-l3)*df(1,i-1);
R(i)=(2-l1)*vf(1,i)/df(1,i);
end
i=3:n
plot(i,R(i));
hold on
plot(x/50)
这种方法检测稳定性行吗?看到哪一时刻是不稳定的

[ 本帖最后由 prince00840 于 2008-12-25 12:51 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-22 23:27 , Processed in 0.062388 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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