prince00840 发表于 2008-12-6 15:30

求助 我编的程序出现循环次数不对

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 编辑 ]

ydlcsu 发表于 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开始的。

prince00840 发表于 2008-12-6 15:46

不好意思啊,假设xf(1,1)、vf(1,1)、df(1,1)已知;
l、w、q也是已知(大于零小于一)

ydlcsu 发表于 2008-12-6 16:23

暂时看不出你的程序有什么问题,程序结束后R的维数不是1×n的?

ChaChing 发表于 2008-12-6 16:27

楼主的程序错误很多! 不是直接复制的吧!

friendchj 发表于 2008-12-6 17:45

回复 楼主 prince00840 的帖子
不太明白你的意思,循环是n-1次,R也应该是n-1次吧

prince00840 发表于 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

sogooda 发表于 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);就可以。

还有就是我觉得楼主需要自己设置断点,跟踪变量调试,看究竟是哪里错了。

ydlcsu 发表于 2008-12-7 13:02

搞不懂楼主是什么意思,你两次给出的代码都有很明显的错误,根本不可能运行,不知道你是怎么得到结果的。你最好是把你运行的matlab原始程序复制粘贴过来,另外说明下x,l,q,w的维数,最好给出值。

prince00840 发表于 2008-12-8 08:48

l,q,w 是系数,0<l,q,w <1

friendchj 发表于 2008-12-8 09:14

clear
clc
%~~~~~~~~~~~~~~~~~~~~~~
% 假设
n=10;
xf=;
x=ones(1,10);
vf=;
df=;
l=0.1;
w=l;
q=l;
R=; % 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

prince00840 发表于 2008-12-8 10:06

:hug: XIEXIExiexie谢谢各位老师了,我好感动啊,这么多帮忙的
ydlcus    friendchj   sogooda    :handshake 非常感谢啊:loveliness:

ydlcsu 发表于 2008-12-8 11:38

也不知道你问题解决没有,希望这么多人没白忙活。
现在还没想明白你怎么会碰到这样的问题

prince00840 发表于 2008-12-8 12:48

我本来打算看看一组数的稳态检测
x=;
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 编辑 ]

prince00840 发表于 2008-12-25 11:30

看一组数的稳定性

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

x=;
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 编辑 ]
页: [1]
查看完整版本: 求助 我编的程序出现循环次数不对