精华内容
下载资源
问答
  • 采用matlab软件中的m文件实现,分段函数示例, 文档中有相应的注释,方便大家学习。
  • 此应用程序允许用户定义分段函数,计算三角傅立叶级数展开的系数,并绘制近似值。
  • % 连续分段函数(线性)。 % 使用此功能,您只能生成分段线性图% 与单位功能的点。 % % [x,f(x)] = pwfun(xPoints,yPoints,number of samples,graph option); % % xPoints:x 轴的点。 % yPoints:y 轴的点。 % 样本...
  • 在很长一段时间里面,我都只用上了连续或可导函数(也指那种可以用一个函数表达式表示),结果在这次布置的作业必须要用到分段函数,如下图,总不能通过一条线一条线的plot出来吧。 对于这样一个分段函数而言,有...

    在很长一段时间里面,我都只用上了连续或可导函数(也指那种可以用一个函数表达式表示),结果在这次布置的作业必须要用到分段函数,如下图,总不能通过一条线一条线的plot出来吧。

    在这里插入图片描述
    对于这样一个分段函数而言,有以下两种方式可以很好的解决

    1. 利用逻辑表达式
      比如第一个就可以表示为:

      在这里插入图片描述
      即当 t 在某一个范围内那段函数才生效,否则乘上逻辑式因子就为 0,得到的效果图如下:

    2. 利用阶跃函数Heaviside:

    t=-1:0.01:5;
    plot(t,heaviside(t),'linewidth',3);
    grid on;
    

    画出来的heaviside()函数图像:

    在这里插入图片描述
    通过两个heaviside函数相减就可以得到一个有效的矩形区域,分别乘以相应的函数段表达式相加即可。效果如下:

    实际上得到的效果与方法一基本一致

    展开全文
  • MATLAB分段函数及应用实例

    万次阅读 多人点赞 2018-02-24 22:24:08
    简单实例:用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&lt...

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

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

            x>=0x<=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;
    

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

    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;
    


    S形速度曲线变速过程

    Vs=0;Ve=0;V=200000;Tacc=0.3;Tdec=0.3;Ts=0.15;Ts2=0.08;Ts3=0.07;Ts4=0.12;CV1=100000;CV2=160000;
    T1=0.5;T2=T1+Ts2;T3=T2+Ts2;T4=T3+0.2;T5=T4+Ts3;T6=T5+Ts3;T7=T6+0.2;T8=T7+Ts4;Ted=T8+Ts4;%Ted=1.44;
    t=0:0.0001:Ted;
    J=V/(Tacc-Ts)/Ts;A=V/(Tacc-Ts);J2=(V-CV1)/Ts2/Ts2;A2=(V-CV1)/Ts2;J3=(CV2-CV1)/Ts3/Ts3;A3=(CV2-CV1)/Ts3;J4=CV2/Ts4/Ts4;A4=CV2/Ts4;
    V1=J*Ts.^2/2;V2=V;V3=V;V4=V-J2*Ts2.^2/2;V5=CV1;V6=CV1;V7=CV1+J3*Ts3.^2/2;V8=CV2;V9=CV2;V10=V9-J4*Ts4.^2/2;
    Vt=(Vs+J*t.^2/2).*(t>=0 & t<Ts)...
        +(V1+A*(t-Ts)-J*(t-Ts).^2/2).*(t>=Ts & t<Tacc)...
        +V2.*(t>=Tacc & t<T1)...
        +(V3-J2*(t-T1).^2/2).*(t>=T1 & t<T2)...
        +(V4-A2*(t-T2)+J2*(t-T2).^2/2).*(t>=T2 & t<T3)...
        +V5.*(t>=T3 & t<T4)...
        +(V6+J3*(t-T4).^2/2).*(t>=T4 & t<T5)...
        +(V7+A3*(t-T5)-J3*(t-T5).^2/2).*(t>=T5 & t<T6)...
        +V8.*(t>=T6 & t<T7)...
        +(V9-J4*(t-T7).^2/2).*(t>=T7 & t<T8)...
        +(V10-A4*(t-T8)+J4*(t-T8).^2/2).*(t>=T8 & t<Ted);
    figure(2);
    plot(t*1000,Vt/1000);
    axis([0 1.6*1000 0 220000/1000]);
    title('S形曲线调速过程');
    xlabel('时间(ms)');
    ylabel('速度(KHz)');
    grid on;
    




    展开全文
  • ; margin-right:0pt">function myfun2(t) rb=0.0153; %轴承内圈半径 单位m db=0.0079; %轴承滚珠直径 单位m  L=0.002; %故障长度 Dm=0.0385;...plot(t,y)</p>
  • Matlab分段函数图象画法的几点注记.pdf
  • 如何使用matlab实现分段函数

    万次阅读 多人点赞 2018-10-09 20:39:13
    实现如下的分段函数: m={t0≤t&amp;amp;amp;lt;1−t+21&amp;amp;amp;lt;t≤20.1其他 m=\left\{ \begin{array}{rcl} t &amp;amp;amp;amp; &amp;amp;amp;amp; {0 \leq t &amp;amp;amp;lt;1}...

    实现如下的分段函数:
    m = { t 0 ≤ t &lt; 1 − t + 2 1 &lt; t ≤ 2 0.1 其 他 m=\left\{ \begin{array}{rcl} t &amp; &amp; {0 \leq t &lt;1}\\ -t+2 &amp; &amp; {1 &lt; t \leq 2}\\ 0.1 &amp; &amp; {其他}\\ \end{array} \right. m=tt+20.10t<11<t2

    方法一:

    # 先写一个函数脚本;
    function m=fenduanhanshu(t)
    m=t.*(t>=0 & t<1)+(-t+2).*(t>1 & t<=2)+0.1.*(t<0 | t>2)  # 注意此处是点乘,否则会报错内部矩阵维度不一致;
    end
    

    此处语句解释:当表达式中的(t>=0 & t<1)成立时,此时的布尔表达式值为True,值为1,t*(t>=0 & t<1) = t1;此时表达式中的布尔表达式(t>1 & t<=2)和(t<0 | t>2)都不成立,取0参与运算,故此时m=t1+(-t+2)0+0.10 = t;

    # 在command window中调用此函数,并作图;
    >> x=0:0.01:2;
    >> m=fenduanhanshu(t);
    >> plot(m,t)
    

    作图如下:
    在这里插入图片描述

    方法二:

    # 写一个脚本后直接运行;
    t=-1:0.01:3; # 自己根据需要设置;
    m=zeros(size(t));  # 生成与矩阵t相同大小的全零矩阵;
    for i=1:length(t)  # 数组长度(即行数或列数中的较大值);
        if (t(i)>=0)&(t(i)<=1)
            m(i)=t(i);
        elseif (t(i)>1)&(t(i)<=2)
            m(i)=-t(i)+2;
        else
            m(i)=0.1;
        end
    end
    plot(t,m,'r')  # 'r'表示线为红色;
    grid on  # 网格
    
    >> t=-1:0.01:3;
    >> size(t)  # 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素是矩阵的行数,第二个元素是矩阵的列数;
    
    ans =
    
         1   401
    
    B=zeros(n) # 生成n×n全零阵;
    B=zeros(m,n) # 生成m×n全零阵;
    B=zeros([m n]) # 生成m×n全零阵;
    B=zeros(d1,d2,d3……) # 生成d1×d2×d3×……全零阵或数组;
    B=zeros([d1 d2 d3……]) # 生成d1×d2×d3×……全零阵或数组;
    
    B=zeros(size(A)) # 生成与矩阵A相同大小的全零阵;
    
    n=length(A)  # 如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));
                 # 如果A为空数组,则返回0;
                 # 如果A是一个向量则返回A的长度;
    n=numel(A)   # 该语句返回数组A中元素的总数;
    
    展开全文
  • matlab分段函数代码数字电路优化 作者:macasal和sgalella 用于设计和优化数字电路的进化算法的实现。 给定许多输入和目标输出,该算法将找到满足这些条件的逻辑电路。 遗传算法 我们的人口由不同的个体组成,分别...
  • Matlab分段函数的积分

    万次阅读 2019-05-26 00:47:42
    本文介绍一个使用Matlab进行求分段函数积分值的方法。 首先介绍如何使用int()对连续函数进行积分的求解,然后介绍一个对分段函数进行求积分的例子。 (二)使用Matlab求定积分 Matlab中求积分的函数为int(),调用...

    (一)前言

    本文介绍一个使用Matlab进行求分段函数积分值的方法。

    首先介绍如何使用int()对连续函数进行积分的求解,然后介绍一个对分段函数进行求积分的例子。

    (二)使用Matlab求定积分

    Matlab中求积分的函数为int(),调用形式为int(func, 'x', a, b),其中func为被积函数,x为积分变量,[a, b]为被积区间。

    如int(x^2, 'x', 1, 2)为求函数y=x^2在区间[1, 2]的积分值,结果为7/3。

    注意:在使用int()进行积分时,需要将积分变量定义为系统变量(我使用具体的值的时候经常出现问题)。并且许多系统自带的函数不能用int()进行积分,实际上自己写的函数(即函数文件名)也不能写在func参数上,而直接将x^2写入就没问题。这个部分如果以后知道了原因或者具体的细节再进行补充。

    (三)分段函数的数值积分

    对于分段函数,我们不能直接把整个函数直接写入func参数中(毕竟表达式都不一样,但是如果函数文件可以的话或许可以解决),我这里写一个参数可变的积分函数进行分段函数积分的求解,函数如下:

    %myint.m
    function  [ out ]  = myint(t, F1, L1, R1, F2, L2, R2, F3, L3, R3, F4, L4, R4)
    % MYINT 分段函数积分
    %        最多支持4段
    %        第一个参数为积分变量
    %        后面的参数格式为:函数func 区间左端点L 区间又端点R
    if(nargin>=1)                   %一段
        out=int(F1,t,L1,R1);
    end
    if(nargin>=5)                   %两段
        out=out+int(F2,t,L2,R2);
    end
    if(nargin>=8)                   %三段
        out=out+int(F3,t,L3,R3);
    end
    if(nargin>=11)                  %四段
        out=out+int(F4,t,L4,R4);
    end
    end

    这样的话就可以一次性把分段函数的多段传入进行求解,比如一个函数fx=2x+1,(x<0), fx=-2x+1 (x>0),则fx在区间[-0.5,0.5]的积分可以表达为: f1=2*x+1; f2=-2*x+1; myint('x', f1, -0.5, 0, f2, 0, 0.5); 计算结果为1/2。

    看到这里你可能会感到有些失望--这不就是把几个函数写一块了嘛?!的确是这样的(利用Matlab的多目表达式甚至可以一行就写完)。如果大家有更好的方法,烦请告知,欢迎留言。

    展开全文
  • 使用matlab绘制分段函数的三种方法

    千次阅读 2021-09-05 12:41:22
    找到了三种绘制分段函数的方法,绘制如下函数 第一种方法: %第一种分段函数 t1=0:0.1:10; v1=t1; t2=10:0.1:20; v2=0*t2+10; t3=20:0.1:30; v3=30-t3; t=[t1 t2 t3]; v=[v1 v2 v3]; plot(t,v); axis([0 32 0 12]...
  • matlab分段函数

    千次阅读 2019-04-18 17:57:08
    y=(330-x).(x<130)+(290-x).(x>130); plot(x,y) y=(330-x).(x<129)+(290-x).(x>130); plot(x,y) 或者 x1 = -1:0.1:0; y1 = x1; x2 = 0:0.1:1; y2 = 2*x2; plot([x1 x2],[y1 y2]);...plot([x1 x2],[y...
  • MatLab绘制分段函数&激活函数

    千次阅读 2018-08-20 00:50:18
    1 MatLab绘制二维图像 1.1 语法 函数 plot(x,y,’r’,’lineWidth’,1)%‘r’曲线颜色,‘lineWidth’曲线宽度 标题 title(‘图片描述’) 坐标轴标签 xlabel(‘x轴’) ylabel(‘y轴’) 坐标...
  • 使用MATLAB绘制分段函数实现

    万次阅读 2020-07-16 16:52:11
    绘制分段函数也是很常见的需求,实现分段函数的绘制也有多种方式。以下面 分段函数为例,进行说明。 方法一:直接根据分段函数的含义,根据x值的不同,相对应的函数值也不同,进行描点连线。 x=0:0.1:5 y=[] ...
  • MATLAB分段函数

    千次阅读 2020-04-10 15:33:26
    MATLAB分段函数 x = input('') if x<0 && x~=-3 fx=x*x+x-6 elseif x>=0 && x<5 && x~=2 && x~=3 fx=x*x-5*x+6 else fx=x*x-x-1 end disp(fx)
  • matlab分段函数代码matlab_dynamics 注意:由于很难弄清楚如何使用此代码,因此希望可以将包含动态代码的propagation / mcFitness函数用作其他工作的框架。 MATLAB代码的存储库,它可以在网格上执行量子动力学,...
  • matlab分段函数的积分

    千次阅读 2020-03-08 23:29:45
    首先定义分段函数 y=2x when 0<=x<=2 y=3x when 2<x<=4 y=0 else 代码为如下,注意用点乘运算,并且使用逻辑函数&而非&&,否则会报错 function y=f(x) y=(x.*2).*(x>=0 & x&...
  • 最近编写程序的时候遇见一个问题,如何对一个矩阵中属于不同范围的元素进行不同的操作?刚开始使用if--elseif--else...分段函数表达式如下: 我们使用分段函数,对矩阵中大于0的元素加1,对矩阵中小于等于0的元...
  • matlab学习—分段函数计算

    千次阅读 2021-03-18 00:32:10
    分段函数计算 分段函数用if函数,代码如下(示例): function f=fun(x) if x==10 f=cos(x+1)+sqrt(x^2+1); else f=x*sqrt(x+sqrt(x)); end end 新建函数脚本调用
  • 使用matlab绘制函数y=1/x的曲线图, 尝试使用了syms 的方法,和fplot的方法, 面临的问题是:fplot可以绘制分段函数,可是在x=0的左右两侧会有一个线,如图所示: 为了解决这个办法,分别绘制了两条曲线,使用命令:...
  • 代码范例 clc,clear; T=0.001;... %f1(t)的 MATLAB描述 k2=-1:T:3; f2=(k2>0)-(k2>2); %f2(t)信号的描述 %画图程序 subplot(3,1,1) plot(k1,f1); axis([-1,5,0,2.2]) %f1的显示范围 title('f1');
  • 利用 Matlab Function block function [mean, stdev] = fcn(vals) % #codegen % calculates a statistical mean and a standard % deviation for the values in vals len = length(vals); mean = avg(vals, len);...
  • 利用MATLAB分段函数f(x)

    千次阅读 多人点赞 2019-08-21 15:38:20
    利用MATLAB分段函数F(X) 方法一 建立M文件: function [y]=ch3_1(x) n=length(x); for i=1:n if x(i)>1 y(i)=x(i)^2; elseif x(i)>-1 y(i)=1; else y(i)=3+2*x(i); en...
  • MATLA中如何求分段函数的图像 比如我们有如下分段函数 方法一、使用综合表达式 clear;clf; x=-10:0.1:10; y=x.2+(10+x).(1/4)+3x.(x>0)+0.(x==0)+x.^3+sqrt(10-x)-3x.(x<0); plot(x,y,‘r–’,‘LineWidth’,...
  • Matlab分段函数

    万次阅读 多人点赞 2017-07-31 12:01:21
    确定你需要的分段函数是怎样一个表达式,比如下面我的这个例子。 y = x,0  2,4  5 - x/2, 6  1, x >= 8; 打开MATLAB软件,粘贴以下代码: clc; clear all x=0:0.01:10; y=x.*(x>=0&...
  • 这里演示怎么使用matlab定义函数然后实现积分: 1、一重积分: 测试函数 (exp(-x).*(x>=0)+exp(x).*(x<=0)) 首先利用matlab函数计算: tic integral(@(x)(exp(-x).*(x>=0)+exp(x).*(x<=0)),-5,...
  • MATLAB编程》例题-画分段函数图像

    千次阅读 2021-03-20 15:48:55
    使用matlab函数图像(使用if-else): 租用一个交通工具前 100 公里 1 美元每公里,在下面的 200 公里中 0.8 美元每分钟,越过 300 公里的部分一律按0.7 美元每公里.已知公里数,编写对应的 MATLAB语句计算出总花销,...
  • 这个折腾了一晚上,注视是因为我菜,还有一点原因是因为我强迫症——总不想代入数值(觉得那种分段函数只是离散函数,不是连续分段函数)。 主要想法 用阶跃函数实现分段(其实逻辑表达也行)。 fplot的使用。 ...
  • matlab绘制分段函数曲线

    万次阅读 2018-10-11 08:23:52
    代码: x=linspace(-5,5,100); y=[]; for x0=x; if x0&gt;0  y=[y,1/2*log(x0+sqrt(1+x0.^2))]; else  y=[y,(x0+sqrt(pi))/exp(2)]; end end plot(x,y) 结果:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,113
精华内容 1,645
关键字:

matlab分段函数

matlab 订阅