一次递减代码matlab,一个简单的方法判断序列是递增还是递减

本文探讨了Simulink中LookupTable模块的工作原理及其反查需求。当面对递减序列作为BreakPoints时,文章提出了三种实用的解决方案:直接修改、利用MATLAB的diff函数进行差分判断及通过排序前后对比来确定序列特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Emm...上次好像说这个月不更了😂😂😂。刚碰到点事有点烦躁,还是趁这会写点东西缓一缓吧🤗🤗🤗。

问题背景:

(如果看不懂这次的问题可以忽略,我可能说的也不怎么清楚)

我今天下午在学Simulink的时候,学到了一个叫Lookup Table的模块,它其实就相当于一个数据库,根据输入的值(相当于自变量)在Table中查找对应的要输出的值(相当于因变量)。

这个模块它有个要求就是BreakPoints(自变量)必须是一个递增的序列。那么当我们需要反查表时就要把对应的TableData(因变量)作为BreakPoints(自变量)来设置一个Lookup Table。

由于原TableData(原因变量)可能是一个递减的序列,所以在反查表时把原Table Data作为Break Points时就可能会出现BreakPoints为递减的情况,而这个模块要求BreakingPoints必须递增。

在这时候呢,可以手动去改,也可以写一段代码来生成用于反查的Lookup Table,那么这就需要来判一断序列是递增还是递减了。

(写代码来解决这个问题是因为,以后可以把这功能集成到一个专门针对Simulink建模的小工具,这样会很方便)

实现方法:

方法一

在数学中判断一个数列是增是减的方法是看后一项和前一项的差值:比如现在有一个序列 a,那么如果对所有的 i 有

a(i) - a(i-1) > 0

的话那么这个序列就是一个严格单调递增的数列。

你可以通过一个循环来遍历所有元素,在每次循环中判断当前元素和上一个元素之间的差值,如果在每次循环中这个差值都是大于0的那么这个序列就是递增的。

其实就是做差分

(由于这个方法太low,也很简单,我就不写代码了)

方法二

MATLAB中有一个自带的可以求差分函数:diff 。它就可以实现上面说的差分:

225a0c1083d4d8e87a4120c19148c30f.png

怎么样🤔?

方法三

我们知道一个递增的序列如果对他按由小到大排序它还是原来的它没有变,嘿嘿😌,那么解决办法不就来了么:

89db233d1eca092d82f78d8f24dda877.png

这个方法三是不是很清晰🤔。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值