声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1327|回复: 7

[综合讨论] 请问这个分段函数的写法的问题在哪儿

[复制链接]
发表于 2009-9-12 13:56 | 显示全部楼层 |阅读模式

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

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

x
function creature(a,b,c)
for x=a:0.1:b
   if(a<x<c)
       y=-x;
     elseif(c<x<b)
       y=x;
     end
end
x=a:0.1:b
plot(x,y)
为什么我在命令窗口调用函数以后,最后图形的y值是b的值
回复
分享到:

使用道具 举报

发表于 2009-9-12 14:27 | 显示全部楼层
个人水平专业有限, 建议楼主说清楚些!
 楼主| 发表于 2009-9-12 14:32 | 显示全部楼层
我在.M文件编写了这个分段程序,abc是变量。然后再comman窗口输入creature(100,200,150)时,figure里面的y显示不为分段函数,而是定值200,这是为什么呢?
发表于 2009-9-12 14:43 | 显示全部楼层
在plot前加上whos看看x,y的大小!  注意y仅有1*1
 楼主| 发表于 2009-9-12 15:27 | 显示全部楼层
谢谢,看见了。我再改下看看
我将开始的程序改成了
function creature(a,b,c)
x=a:0.1:b
   if(a<x<c)
       y=-x;
     elseif(c<x<b)
       y=x;
   end
plot(x,y)
输入creature(100,200,150)时图形结果是x在100到200变化时y=-x,而y=x没有了。请问下这是为什么呢?
还有
function creature(a,b,c)
x=a:0.1:b
y=(-x).*(a<x&c>=x)+x.*(c<x&b>=x);
plot(x,y)
输入creature(100,200,150),图形在150的时候有个跳变过程,怎么样才能将那条跳变的直线去掉呢?

[ 本帖最后由 ChaChing 于 2010-7-14 00:26 编辑 ]
发表于 2009-9-12 16:04 | 显示全部楼层


楼主提醒了我, matlab有这种写法吗? 个人没连在一起用过!
因未报错所以试了下, a<x<c全为1, 但c>x>a全为0, 汗! 目前也不知道为何?
至於跳变的直线不画, 可以分两次画! 下面请参考
function creature(a,b,c)
x1=a:0.1:c; y1=-x1; x2=c:0.1:b; y2=x2;
x=[x1,x2]; y=[y1,y2];
plot(x1,y1,x2,y2)

评分

1

查看全部评分

 楼主| 发表于 2009-9-12 16:12 | 显示全部楼层
谢谢,知道了
发表于 2009-9-13 00:09 | 显示全部楼层
可以这样
function myfun(a,b,c)
x=a:0.1:b;
y=zeros(1,length(x));
for i=1:length(x)
   if (a<x(i) && x(i)<c)
       y(i)=-x(i);
   elseif (c<x(i) && x(i)<b)
       y(i)=x(i);
   end
end
x=a:0.1:b;
plot(x,y)

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-6-7 12:07 , Processed in 0.075974 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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