使用matlab表示“段数不确定”的分段函数
示例函数:

分段函数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表示“段数不确定”的分段函数的更多相关文章
- bzoj2243树链剖分+染色段数
终于做了一道不是一眼出思路的代码题(⊙o⊙) 之前没有接触过这种关于染色段数的题目(其实上课好像讲过),于是百度了一下(现在思维能力好弱) 实际上每一段有用的信息就是总共有几段和两段各是什么颜色,在开 ...
- ZOJ 1610——Count the Colors——————【线段树区间替换、求不同颜色区间段数】
Count the Colors Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Subm ...
- W同学的新画板 QDUOJ 线段树 区间颜色段数
W同学的新画板 QDUOJ 线段树 区间颜色段数 原题链接 题意 W同学在每天的刻苦学习完成功课之余,都会去找一些有趣的事情来放松自己:恰巧今天他收到了朋友送给他的一套画板,于是他立刻拆开了包装,拿出 ...
- HYSBZ - 2243 树链剖分 + 线段树 处理树上颜色段数
用线段树处理颜色段数 记录区间内的颜色段数,区间右端点的颜色,区间右端点的颜色. int tr[maxn<<2], lc[maxn<<2], rc[maxn<<2] ...
- 自学Python3.2-函数分类(内置函数)
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- matlab中可用于进行轮廓提取的函数
本文主要总结一下在matlab中可用于进行轮廓提取的函数. 1 bwperim 根据参考资料[2]的提示,可以使用bwperim()函数进行轮廓提取,具体代码如下: %读取原图im = imread( ...
- 通过n+1个控制点求出n段分段函数的解析式
最近刚好学了解析几何,在学完二元一次方程组与一次函数的关系后,我突然有了一个大胆的想法! 可不可以用程序自动求出一次函数的解析式呢? 这个想法源自于最近一段时间数学练习册上百考不厌的同类型题:给定在一 ...
- 如何将Matlab中“模糊控制设计器”的隶属度函数导出图片(figure)
如何将Matlab中"模糊控制设计器"的隶属度函数导出图片(figure)详情参考matlab官方帮助手册:plotmf()函数https://www.mathworks.com/ ...
- matlab小段代码学习
matlab读hdf文件到txt filename='E:\data\H1BDLD10110607231863921.L2B.HDF'; h=hdftool(filename); Latitude = ...
随机推荐
- 洛谷P3048 [USACO12FEB]牛的IDCow IDs
P3048 [USACO12FEB]牛的IDCow IDs 12通过 67提交 题目提供者lin_toto 标签USACO2012 难度普及/提高- 时空限制1s / 128MB 提交 讨论 题解 ...
- python并行编程学习之绪论
计算机科学的研究,不仅应该涵盖计算处理所基于的原理,还因该反映这些领域目前的知识状态.当今,计算机技术要求来自计算机科学所有分支的专业人员理解计算机处理的基础的关键,在于知道软件和硬件在所有层面上的交 ...
- CSS盒子知识
此随笔写于学习完CSS盒子之后,所遇到的问题和感悟记录. 1.IE盒子: IE盒子的特性:对于IE浏览器来说width不是内容宽度.而是内容+外边距+边框的内容总和. 也就是说当盒子增加10px;那么 ...
- 应用maven自动部署的脚本
@(编程) 最近写了一个自动部署的脚本,可以一键部署到测试服务器或者生产服务器上,包括一个函数脚本和一个调用脚本,比较简单,记录如下. 特点如下: 部署前自动备份 可以部署tomcat项目和java项 ...
- 使用git拉取github上的项目
一. 安装Git 去Git官网,下载安装包,一路点next,默认安装. 安装之后,在空白处右键,菜单显示有 Git GUI Here 和 Git Bash Here ,表示Git安装成功. 二. 配置 ...
- JAVA多线程提高一:传统线程技术&传统定时器Timer
前面我们已经对多线程的基础知识有了一定的了解,那么接下来我们将要对多线程进一步深入的学习:但在学习之前我们还是要对传统的技术进行一次回顾,本章我们回顾的则是:传统线程技术和传统的定时器实现. 一.传统 ...
- 2D旋转和3D旋转
2D旋转 先给个容器 <p onClick="rotate2D()" id="rotate2D" class="animated_div&quo ...
- Goolge-Guava Concurrent中的Service
最近在学习了下Google的Guava包,发现这真是一个好东西啊..由于平时也会写一些基于多线程的东西,所以特意了解了下这个Service框架.这里Guava包里的Service接口用于封装一个服务对 ...
- 详解H5中的history单页面,手动实现单页面开发,细说h5单页面原理
就目前来看,前端的单页面开发占了很大一部分,一方面无刷新的切换增强了体验,并且浏览器记录依然存在,前进后退都没问题,在之前我们通地址栏中的hash改变来触发onhashchange方法来实现单页面应用 ...
- var_dump打印出来格式太乱 怎么调
var_dump()和print_r() 输出的都是文本格式,在浏览器中就是这样如果你加载了 xdebug 扩展,那么 var_dump() 就会以 html 格式输出