注册 登录
编程论坛 Matlab

这个MATLAB代码错在哪儿?为何不能运行啊???!!!

千斤顶 发布于 2008-10-12 19:01, 1318 次点击
function y=Fn(x,p)
x(1)=x;
for i=1:100
if (x(i)>=0&x<p)
    y(i)=x(i)/p;
elseif(x(i)>=p&x(i)<0.5)
    y(i)=(x(i)-p)/(0.5-p);
elseif(x(i)>=0.5&x(i)<1)
     y(i)=Fn(1-x(i),p);
end
x(i+1)=y(i);
i=i+1;
end
plot(y);
%注意:x是在0到1之间的,p是在0到0.5之间的!!
5 回复
#2
hitzhang2008-10-12 20:43
function y=Fn(x,p)
x(1)=x;
for i=1:100
if (x(i)>=0&x<p)
    y(i)=x(i)/p;
elseif(x(i)>=p&x(i)<0.5)
    y(i)=(x(i)-p)/(0.5-p);
elseif(x(i)>=0.5&x(i)<1)
     y(i)=Fn(1-x(i),p);
end
x(i+1)=y(i);
i=i+1;%%%%%%%%%%%%%%%%%%%%%%这句不要!
end
plot(y);
#3
千斤顶2008-10-12 21:20
忘了,这句是多余的。可是去掉这句后还是不能运行啊?matlab显示如下代码:
???  Index exceeds matrix dimensions.

Error in ==> F:\MATLAB6.0\work\Fn.m
On line 11  ==> x(i+1)=y(i);

Error in ==> F:\MATLAB6.0\work\Fn.m
On line 9  ==>      y(i)=Fn(1-x(i),p);

Error in ==> F:\MATLAB6.0\work\Fn.m
On line 9  ==>      y(i)=Fn(1-x(i),p);

Error in ==> F:\MATLAB6.0\work\Fnn.m
On line 9  ==>      y(i)=Fn(1-x(i),p);
#4
shiyuwtog2008-10-12 22:39
没有错误。但是你的x有大小为101,但y的只有100.
画图的时候没有错误!
#5
千斤顶2008-10-12 23:09
可是不知为何总是不能运行
#6
hitzhang2008-10-14 23:12
function y=Fn(x,p)
x(1)=x;y=[];
for i=1:100
if ((x(i)>=0)&&(x<p))
    y=x(i)/p;
elseif((x(i)>=p)&&(x(i)<0.5))
    y=(x(i)-p)/(0.5-p)
elseif((x(i)>=0.5)&&(x(i)<=1))
     yy=Fn(1-x(i),p)
     y=yy(i);
end
x(i+1)=y;
end
y=x(2:end);
plot(y);
1