MATLAB 如何实现分段函数
m=t(0=<t<1)m=-t+2(1<t<=2)m=0.1(其他)想画出m(t)的时域波形...
m=t (0=<t<1)
m=-t+2 (1<t<=2)
m=0.1 (其他)
想画出m(t)的时域波形 展开
m=-t+2 (1<t<=2)
m=0.1 (其他)
想画出m(t)的时域波形 展开
展开全部
1、首先我们确定下所画的函数
sin(2*x) 0<=x<=pi
2*x pi<x<=5
0 其余的x
2、然后我们介绍下匿名函数f=@(x) sin(2*x) 此时我们就定义了一个sin(2*x)函数。
3、接着我们限制sin(2x)的定义域,(x>=0 & x<=pi) 这里&表示并且的意思。
4、我们按同样的方法定义第二个函数 2*x.*(x>pi& x<=5)
5、最后我们将两个函数组合在一起,这样我们就基本完成任务了。 f=@(x) sin(2*x) .*(x>=0 & x<=pi) +2*x.*(x>pi& x<=5)
6、然后我们定义所画的范围z=-1:10^-2:7;y=f@(z); plot(z,y,'or')
Sievers分析仪
2024-10-13 广告
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准...
点击进入详情页
本回答由Sievers分析仪提供
展开全部
有很多种形式可以实现分段函数,其中最简单而运算起来又最快的是:
下面以你的题目为例
function m=fenduanhanshu(t)
m=t*(t>=0 & t<1)+(-t+2)*(t>1 & t<=2)+0.1*(t<0 | t>2)
【解释】
在Matlab中,上述函数中的表达式m=t*(t>=0 & t<1)+(-t+2)*(t>1 & t<=2)+0.1*(t<0 | t>2)的运算规则是当布尔表达式为true时,布尔表达式的值取1,参与运算,否则取0,参与运算。
例如,当表达式中的(t>=0 & t<1)成立时,t*(t>=0 & t<1)=t*1;此时表达式中的布尔表达式(t>1 & t<=2)和(t<0 | t>2)都不成立,取0参与运算,故此时m=t*1+(-t+2)*0+0.1*0=t。
Matlab中的这种设计极大地方便了用户进行科学计算,减少了用户书写的代码量,开发效率大大提高,个人非常喜欢,所以也极力推荐各位使用。
当然还可以用if……elseif……else……end语句,在此不再多说了。
【绘制函数】
x=0:0.001:2;
y=fenduanhanshu(x);
plot(x,y)
还有就是用Matlab自带的函数工具箱,具体大家自己找下。
下面以你的题目为例
function m=fenduanhanshu(t)
m=t*(t>=0 & t<1)+(-t+2)*(t>1 & t<=2)+0.1*(t<0 | t>2)
【解释】
在Matlab中,上述函数中的表达式m=t*(t>=0 & t<1)+(-t+2)*(t>1 & t<=2)+0.1*(t<0 | t>2)的运算规则是当布尔表达式为true时,布尔表达式的值取1,参与运算,否则取0,参与运算。
例如,当表达式中的(t>=0 & t<1)成立时,t*(t>=0 & t<1)=t*1;此时表达式中的布尔表达式(t>1 & t<=2)和(t<0 | t>2)都不成立,取0参与运算,故此时m=t*1+(-t+2)*0+0.1*0=t。
Matlab中的这种设计极大地方便了用户进行科学计算,减少了用户书写的代码量,开发效率大大提高,个人非常喜欢,所以也极力推荐各位使用。
当然还可以用if……elseif……else……end语句,在此不再多说了。
【绘制函数】
x=0:0.001:2;
y=fenduanhanshu(x);
plot(x,y)
还有就是用Matlab自带的函数工具箱,具体大家自己找下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
matlab对分段函数有非常简单的表示,对此例而言,语句如下:
x = -5:.1:5;
y = (3*x.^2+1).*(x>=1) + (2-x.^3).*(x<=-1);
对于楼主的程序,错误之处在于:
elseif -1
x = -5:.1:5;
y = (3*x.^2+1).*(x>=1) + (2-x.^3).*(x<=-1);
对于楼主的程序,错误之处在于:
elseif -1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
x是一个向量, x>1只有在x的所有元素都大于1时才为真,所以你的写法得不到正确结果
>> x=-4:0.1:4;
>> y = 2*x.*(x>1) + x.*(x<-1) + 10*x.*(-1<=x&x<=1);
>> plot(x,y)
>> x=-4:0.1:4;
>> y = 2*x.*(x>1) + x.*(x<-1) + 10*x.*(-1<=x&x<=1);
>> plot(x,y)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
实现代码如下:
function y=myfun1(x)
y=x.*(x>=0 & x<1)+2*x.*(x>=1 &
x<=2);
end
>> x=0:0.001:2;
>>
y=myfun1(x);
>> plot(x,y)
function y=myfun1(x)
y=x.*(x>=0 & x<1)+2*x.*(x>=1 &
x<=2);
end
>> x=0:0.001:2;
>>
y=myfun1(x);
>> plot(x,y)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询