标题:matlab菜鸟提问,画分段函数的曲线,请大家帮助,急
只看楼主
beyond8820
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-6-12
 问题点数:0 回复次数:19 
matlab菜鸟提问,画分段函数的曲线,请大家帮助,急
毕业论文题目, 做一个分段函数曲线。刚刚接触matlab,照葫芦画瓢,没画好,请大家指点。
clear;
n=input('请输入斜面模数的值:');
%输入x1到x2n-1的值,暂定斜面数n为10
x1=input('请输入x1的值:');
x2=input('请输入x2的值:');
x3=input('请输入x3的值:');

%输入斜面倾角的值
angle1=input('请输入斜面倾角1的值:');
angle2=input('请输入斜面倾角2的值:');

%输入送进量的值(m)
s=input('请输入送进量的值:');

%坯料曲线
x=0:10000;
if(0<x&x<x1)
y=tan(angle1)*x;
plot(x,y,'r-'),hold on
elseif(x1<x&x<x2)
y=tan(angle1)*x1;
plot(x,y,'r-'),hold on
end

x1 、x2、angle1都是由用户输入。可是执行的时候,并不画图。请教这个分段函数该怎么写才正确
搜索更多相关主题的帖子: matlab 曲线 input 函数 斜面 
2006-06-12 10:46
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
得分:0 
坯料曲线那段改为:
for x=0:0.1:x1
y=tan(angle1)*x;
plot(x,y,'r-');hold on
end
for x=x1:0.1:x2
y=tan(angle1)*x1;
plot(x,y,'r-');hold on
end

OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2006-06-12 14:05
beyond8820
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-6-12
得分:0 

谢谢你的回答:)

在一个for语句里添加if字段不行么?原来的程序为什么错误呢?

2006-06-12 14:40
beyond8820
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-6-12
得分:0 
还有。 画出的图,为什么y的值都是负的呢?这样,得出的曲线变化范围就不对了呀

超超菜鸟。问的简单,见笑了。
2006-06-12 14:45
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
得分:0 
angle1=input('请输入斜面倾角1的值:');
angle2=input('请输入斜面倾角2的值:');
出现负的可能是,这两个参数输入的时候你是不是以角度输入而不是以弧度输入的.
例如要输入30度角的话,要输入pi*1/6(或者0.5236),你不能输入成30

OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2006-06-12 15:19
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
得分:0 
以下是引用beyond8820在2006-6-12 14:40:19的发言:


谢谢你的回答:)

在一个for语句里添加if字段不行么?原来的程序为什么错误呢?

可以的,
for x=0:0.1:10000;
if(0<x&x<x1)
y=tan(angle1)*x;
plot(x,y,'r-');hold on
elseif(x1<x&x<x2)
y=tan(angle1)*x1;
plot(x,y,'r-');hold on
end
end
效果一样,

你那种写法x是一组1到10000,它们中既有大于x1和x2的也有小于x1和x2的数,
在判断你的if语句的时候,(0<x&x<x1)和(x1<x&x<x2)两句都不正确,所以这两个假设下的程序都不执行了,

[此贴子已经被作者于2006-6-12 15:46:04编辑过]


OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2006-06-12 15:31
beyond8820
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-6-12
得分:0 
没错。输入的是30。嘿嘿
那分段函数,不可以在一个for语句中实现么?
另外,如果用for x=0:0.1:x1,那得出的曲线上,曲线是虚线,如果设置步长小些,如0.01,可以得到实心曲线,不过画图的速度实在很慢。

对于一个画图程序
x=1:10;
y=sin(x) ;这个程序来讲,虽然步长是1,但是画出的曲线就是实心的。我要这个程序里y随x变化的曲线是连续的实心线。是不是可以不把x的范围放到for语句里去设定?
2006-06-12 15:53
beyond8820
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-6-12
得分:0 
再问:

把两段曲线画在一个图框内,第一个曲线,根据上面的for语句可以画出来,但是第二个曲线,x坐标的范围和第一个曲线相同。只是当x在不同范围的时候,y的值不同。例如
for x=0:0.1:10000
if x>0&x<s
y=c-t
elseif x>s&x<s+x1
y=tan(angle1)*c
end
end

这个曲线又怎样和上述 所说的第一个曲线在一个坐标系内画出来呢???
2006-06-12 16:30
zhangenter
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:390
专家分:0
注 册:2006-6-5
得分:0 
以下是引用beyond8820在2006-6-12 15:53:30的发言:
没错。输入的是30。嘿嘿
那分段函数,不可以在一个for语句中实现么?
另外,如果用for x=0:0.1:x1,那得出的曲线上,曲线是虚线,如果设置步长小些,如0.01,可以得到实心曲线,不过画图的速度实在很慢。

对于一个画图程序
x=1:10;
y=sin(x) ;这个程序来讲,虽然步长是1,但是画出的曲线就是实心的。我要这个程序里y随x变化的曲线是连续的实心线。是不是可以不把x的范围放到for语句里去设定?

y(10000)=0;
for x=1:x1
y(x)=tan(angle1)*x;
end
for x=x1:x2
y(x)=tan(angle1)*x1;
end
plot(y)
步长1,实心线


OldHandle = findobj( \'Name\', \'悲伤\' ) ;if ~isempty(OldHandle),delete(OldHandle) ;end for Time = \'现在\':\'每一天\':\'永远\',set( gco, \'心情\', \'快乐\');end % 这段代码为你天天快乐而存在
2006-06-12 16:53
beyond8820
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-6-12
得分:0 
谢谢你

把两段曲线画在一个图框内,第一个曲线,根据上面的for语句可以画出来,但是第二个曲线,x坐标的范围和第一个曲线相同。只是当x在不同范围的时候,y的值不同。例如
for x=0:0.1:10000
if x>0&x<s
y=c-t
elseif x>s&x<s+x1
y=tan(angle1)*c
end
end

这个曲线又怎样和上述 所说的第一个曲线在一个坐标系内画出来呢???

这个问题呢? 头大了。最关键的问题
2006-06-12 17:00



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-71575-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.167388 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved