示例函数:

分段函数f(x)的段数为数组a的长度减1,在表达f(x)时,不能直接使用a的长度5-1=4.

方法1:

先计算每个间隔点的函数值f(a2),f(a3),f(a4),再循环表示f(x)。

f(x) = (2x+1).*(x>2&&x<=4)

+(f(4)+2x^2+2).*(x>4&&x<=6)

+(f(6)+2x^3+3).*(x>6&&x<=8)

+(f(8)+2x^4+4).*(x>8&&x<=10)

因为每段中的表达式有一定的规律,所以可以用循环进行表示。

代码如下:

function y =f(x)

y = 0;
a = [2 4 6 8 10];
% gap vector is used to store f(a1),f(a2),...,f(a5)
gap = zeros(size(a));
for i = 2:length(a)
gap(i) = 2*(a(i)^(i-1))+(i-1);
end
for i = 2:length(a)
gap(i) = gap(i) + gap(i - 1);
end % The representation of piecewise function
for i = 1:length(a)-1
y = y + (gap(i) + 2*(x^i)+i).*(x>a(i)&&x<=a(i+1));
end

方法2:

同方法1,先计算间隔点函数值f(a2),f(a3),f(a4),再使用插值函数判断输入的自变量x位于哪个区间,进而使用该区间上的表达式。

代码如下:

function y = f(x)

a = [2 4 6 8 10];

% 计算每个区间的基数f(a2),f(a3),f(a4)
gap=zeros(size(a));
gap(1)=0;gap(end)=nan;
for i=2:length(a)-1
gap(i)=gap(i-1)+2*a(i)^(i-1)+(i-1);
end %使用插值函数计算x落在哪个区间上,num表示段数。
num=interp1(a,1:length(a),x);
num=ceil(num)-1;
num(isnan(num))=length(a); %处理超过数组a范围的值
num(num==0)=1; %处理第一个x = a(1) %计算函数值,每个分段上的基数加上该分段上的变量
y=gap(num)+2*x.^num+num;

方法3:

同方法2,但不使用插值函数,使用Find函数判断输入的自变量x位于哪个区间

代码如下:

function y = f(x)

a = [2 4 6 8 10];

% 计算每个区间的基数f(a2),f(a3),f(a4)
gap=zeros(size(a));
gap(1)=0;gap(end)=nan;
for i=2:length(a)-1
gap(i)=gap(i-1)+2*a(i)^(i-1)+(i-1);
end %使用find函数计算x落在哪个区间上,num表示段数。
num=find(sort([a x]) == x);
num=num(1)-1; % 当a中某元素与x相同时,取第一个。
num(isnan(num))=length(a); %处理超过数组a范围的值
num(num==0)=1; %处理第一个x = a(1) %计算函数值,每个分段上的基数加上该分段上的变量
y=gap(num)+2*x.^num+num;

参考资料:

matlab分段+递归函数的表示方法

matlab分段函数表示,分段数为变量,不是常量

使用matlab表示“段数不确定”的分段函数的更多相关文章

  1. bzoj2243树链剖分+染色段数

    终于做了一道不是一眼出思路的代码题(⊙o⊙) 之前没有接触过这种关于染色段数的题目(其实上课好像讲过),于是百度了一下(现在思维能力好弱) 实际上每一段有用的信息就是总共有几段和两段各是什么颜色,在开 ...

  2. ZOJ 1610——Count the Colors——————【线段树区间替换、求不同颜色区间段数】

    Count the Colors Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Subm ...

  3. W同学的新画板 QDUOJ 线段树 区间颜色段数

    W同学的新画板 QDUOJ 线段树 区间颜色段数 原题链接 题意 W同学在每天的刻苦学习完成功课之余,都会去找一些有趣的事情来放松自己:恰巧今天他收到了朋友送给他的一套画板,于是他立刻拆开了包装,拿出 ...

  4. HYSBZ - 2243 树链剖分 + 线段树 处理树上颜色段数

    用线段树处理颜色段数 记录区间内的颜色段数,区间右端点的颜色,区间右端点的颜色. int tr[maxn<<2], lc[maxn<<2], rc[maxn<<2] ...

  5. 自学Python3.2-函数分类(内置函数)

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

  6. matlab中可用于进行轮廓提取的函数

    本文主要总结一下在matlab中可用于进行轮廓提取的函数. 1 bwperim 根据参考资料[2]的提示,可以使用bwperim()函数进行轮廓提取,具体代码如下: %读取原图im = imread( ...

  7. 通过n+1个控制点求出n段分段函数的解析式

    最近刚好学了解析几何,在学完二元一次方程组与一次函数的关系后,我突然有了一个大胆的想法! 可不可以用程序自动求出一次函数的解析式呢? 这个想法源自于最近一段时间数学练习册上百考不厌的同类型题:给定在一 ...

  8. 如何将Matlab中“模糊控制设计器”的隶属度函数导出图片(figure)

    如何将Matlab中"模糊控制设计器"的隶属度函数导出图片(figure)详情参考matlab官方帮助手册:plotmf()函数https://www.mathworks.com/ ...

  9. matlab小段代码学习

    matlab读hdf文件到txt filename='E:\data\H1BDLD10110607231863921.L2B.HDF'; h=hdftool(filename); Latitude = ...

随机推荐

  1. python之numpy矩阵库的使用(续)

    本文是对我原先写的python常用序列list.tuples及矩阵库numpy的使用中的numpy矩阵库的使用的补充.结合我个人现在对线性代数的复习进度来不断更博. Section 1:行列式的计算 ...

  2. Git之git push不手动输入用户名和密码

    每次git push时都要输入用户名和密码,感觉很啰嗦,总结了网上的解决办法,有的发现不可以(原因未知),记录一个对我自己可用的方式,我的是windows. 1:添加环境变量 2:在%HOME%目录下 ...

  3. 转:Unable to execute dex: Multiple dex files define 解决方法

    转自:http://blog.csdn.net/mxlxiao7/article/details/8978930 问题发生概述: 程序编译正常,在用Eclipse调试执行时,报错Unable to e ...

  4. 转【非容器化Jenkins连接Kubernetes】

    一.环境说明 OS系统版本:Ubuntu 18.04 TLS 软件版本:Jenkins 2.121.2                Kubernetes plugin 1.10.2          ...

  5. ASP.NET中防止Access数据库下载

    如何防止Access数据库下载是一个很老的话题了,网上的讨论也比较多.这里我们给出几种在ASP.NET下防止Access数据库被下载的方法. 我们这里假设Access数据库名字为 test.mdb. ...

  6. [Mac]一些命令技巧

    Git相关 mac下git默认不区分大小写,通过下面脚本可以改变 #!/bin/bash # 让git区分大小写 cd 'path-of-project' git config core.ignore ...

  7. 【POJ】2142 The Balance 数论(扩展欧几里得算法)

    [题意]给定a,b,c,在天平左边放置若干重量a的砝码,在天平右边放置若干重量b的砝码,使得天平两端砝码差为c.设放置x个A砝码和y个B砝码,求x+y的最小值. [算法]数论(扩展欧几里德算法) [题 ...

  8. 【leetcode 简单】第十五题 加一

    给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1: ...

  9. 深入理解C指针----学习笔记

      深入理解C指针     第1章 认识指针   理解指针的关键在于理解C程序如何管理内存,指针包含的就是内存地址.     1.1 指针和内存   C程序在编译后,以三种方式使用内存: 1. 静态. ...

  10. Tomcat参数调优包括日志、线程数、内存【转】

    [Tomcat中日志打印对性能测试的影响] 一般都提供了这样5个日志级别: ▪ Debug ▪ Info ▪ Warn ▪ Error ▪ Fatal 由于性能测试需要并发进行压力测试,如果日志级别是 ...