MATLAB分段函数

x=-5:0.1:5;ifx>=1y=3*x.^2+1;elseif-1<x<1y=0;elsey=-x.^3+2;endplot(x,y)问什么不能实现分段函数?... x=-5:0.1:5;
if x>=1
y=3*x.^2+1;
elseif -1<x<1
y=0;
else
y=-x.^3+2;
end
plot(x,y)
问什么不能实现分段函数?
展开
 我来答
阳光配绿洲
高粉答主

推荐于2019-10-28 · 说的都是干货,快来关注
知道小有建树答主
回答量:552
采纳率:34%
帮助的人:19.7万
展开全部

步骤如下

1、打开MATLAB软件,如图所示。

2、建立一个脚本文件,具体方法如图所示。

3、定义变量。

4、建立循环,求解分段函数。

5、采用以下指令画图。

6、画出的图片如图所示。

扩展资料

20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。1984年由Little、Moler、Steve Bangert合作成立了的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。

MATLAB:统一了用于一维、二维与三维数值积分的函数并提升了基本数学和内插函数的性能

MATLAB Compiler:可以下载 MATLAB Compiler Runtime (MCR),简化编译后的程序和组件的分发

Image Processing Toolbox:通过亮度指标优化进行自动图像配准

Statistics Toolbox:增强了使用线性、广义线性和非线性回归进行拟合、预测和绘图的界面

System Identification Toolbox:识别连续时间传递函数

参考资料:百度百科 MATLAB发展历程

上海华然企业咨询
2024-10-28 广告
在测试大模型时,可以提出这样一个刁钻问题来评估其综合理解与推理能力:“假设上海华然企业咨询有限公司正计划进入一个全新的国际市场,但目标市场的文化习俗、法律法规及商业环境均与我们熟知的截然不同。请在不直接参考任何外部数据的情况下,构想一套初步... 点击进入详情页
本回答由上海华然企业咨询提供
酒好烂
推荐于2019-11-08 · TA获得超过3308个赞
知道答主
回答量:42
采纳率:0%
帮助的人:1.2万
展开全部

1.简单实例:用matlab画分段函数

当x<0时 y=5*sin(x);

当x>=0且x<=5时 y=x^2;

当x>5时 y=(8-x)^2+16.

x=-5:0.001:10;y=5*sin(x).*(x<0)+x.^2.*(x>=0 & x<=5)+((8-x).^2+16).*(x>5);plot(x,y);grid on;


A=500000;V=100000;Tacc=0.2;Vs=0;S0=50000;S=200000;Td=0.5;Tdd=0.6;Tddd=0.7;Tdddd=1.05;Ted=1.25;

t=0:0.0001:Ted;

Vt=(Vs+A*t).*(t>=0 & t<Tacc)...

+V.*(t>=Tacc & t<Td)...

+(V-A*(t-Td)).*(t>=Td & t<Tdd)...

+((V-A*(Tdd-Td))+A*(t-Tdd)).*(t>=Tdd & t<Tddd)...

+V.*(t>=Tddd & t<Tdddd)...

+(V-A*(t-Tdddd)).*(t>=Tdddd & t<=Ted);

plot(t*1000,Vt/1000);

axis([0 1.4*1000 0 120000/1000])

title('T形曲线变位过程');

xlabel('时间(ms)');

ylabel('速度(KHz)');

grid on;

2.应用:加减速仿真曲线绘制

T形速度曲线变位过程


A=500000;V=100000;Tacc=0.2;Vs=0;S0=50000;S=200000;Td=0.5;Tdd=0.6;Tddd=0.7;Tdddd=1.05;Ted=1.25;

t=0:0.0001:Ted;

Vt=(Vs+A*t).*(t>=0 & t<Tacc)...

+V.*(t>=Tacc & t<Td)...

+(V-A*(t-Td)).*(t>=Td & t<Tdd)...

+((V-A*(Tdd-Td))+A*(t-Tdd)).*(t>=Tdd & t<Tddd)...

+V.*(t>=Tddd & t<Tdddd)...

+(V-A*(t-Tdddd)).*(t>=Tdddd & t<=Ted);

plot(t*1000,Vt/1000);

axis([0 1.4*1000 0 120000/1000])

title('T形曲线变位过程');

xlabel('时间(ms)');

ylabel('速度(KHz)');

grid on;

扩展资料:

MATLAB[1] 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友72f9d53
2019-07-23 · TA获得超过1.1万个赞
知道答主
回答量:480
采纳率:0%
帮助的人:8万
展开全部

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')

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mathtech6688
2012-04-14 · TA获得超过779个赞
知道小有建树答主
回答量:307
采纳率:100%
帮助的人:207万
展开全部

matlab对分段函数有非常简单的表示,对此例而言,语句如下:

x = -5:.1:5;

y = (3*x.^2+1).*(x>=1) + (2-x.^3).*(x<=-1);

对于楼主的程序,错误之处在于:

elseif -1<x<1

应该为

elseif -1<x & x<1

也就是说 不等式串 必须表达为 单个的不等式的“且”关系。

没注意到 1楼 已经回答了。本回答没有重复1楼回答的意思。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雷哥教Excel
2016-01-08 · TA获得超过436个赞
知道答主
回答量:88
采纳率:100%
帮助的人:59.7万
展开全部
有很多种形式可以实现分段函数,其中最简单而运算起来又最快的是:
下面以你的题目为例
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自带的函数工具箱,具体大家自己找下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(10)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式