首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算-ve、零域和+ve域中的斜率

计算-ve、零域和+ve域中的斜率
EN

Stack Overflow用户
提问于 2009-05-21 06:29:24
回答 4查看 1.5K关注 0票数 1

想象一个围绕零线振荡的正弦波。我的任务是使用一个相当粗糙的x轴尺度来计算沿波浪的几个随机点的斜率。(是的,这是一个真实的应用程序)

当波浪在+ve恐怖(在零线以上)时,斜率可以由以下公式计算:

代码语言:javascript
复制
Slope = (y(n) / y(n-1)) - 1

这个yeilds +ve斜率值向上,-ve向下。

问题是,当我们在-ve领域时,必须切换这一点,然后当其中一个vlaues为零时,需要另外两个表达式,总共四个表达式,必须使用条件语句编程选择。

我想找到一个表达式,涵盖所有四个条件,因为这是一个大量旅行的算法和clks计数的中心!

我确信这对于一个数学天才来说是一个微不足道的解决方案,但是对于这些疲惫的眼睛来说,它是我想不到的……

添加:

“正弦波”实际上是一个MACD指标,它源于金融市场的(随机)价格行为。下面是一个例子:

http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:moving_average_conve

斜率(例如下图中粗黑线的斜率)是我需要计算的斜率,这里简单地定义为向上或向下(其中标题向上是+ve)

问题是+ve和-ve斜率都可能出现在零以上或零以下。斜率计算也可以使用跨越零线和在零线处的增量进行。

如果能找到一个不涉及大量IF语句的解决方案,那就太好了。例如,将所有y值移位固定的量,使其变为+ve,然后计算+ve区域中的斜率。我需要选择一个历史上从未低于y的数字,比如几个数量级,例如(99),然后我可以执行offest和一个斜率计算?

EN

回答 4

Stack Overflow用户

发布于 2009-05-21 06:56:54

你说的“正弦波”是什么意思?你是指一个数学生成的y = a sin(bx)图,还是一条平滑的曲线,通过样条拟合到一些实验点,恰好类似于一个正弦波,它围绕x轴振荡?如果是前者,你可以在数学上对其进行微分,并得到任意点的精确斜率。如果是后者,则您要查找的公式为

代码语言:javascript
复制
slope(x) = (y(x-delta) - y(x+delta))/(2 * delta)

尝试使用不同的增量值。不涉及任何条件;分子和分母的符号将自动确保您获得正确的斜率符号。

票数 3
EN

Stack Overflow用户

发布于 2009-05-21 15:58:43

坡度刚刚好

代码语言:javascript
复制
slope = y(n)-y(n-1)

或者,如果x轴上有单位,则将其除以一个x轴步长(即x(n)-x(n-1))。

这个公式是按定义排序的,你在x轴的哪一边并不重要。(我在这里说“排序”,因为斜率是这个方程的极限,因为您的样本箱非常接近,所以这个方程是一个近似值,可以使用其他近似值。)

请记住,噪声数据的斜率将看起来更加噪声。

我怀疑slope page on wikipedia的前几段会帮助你解决这个问题。

票数 2
EN

Stack Overflow用户

发布于 2009-05-21 06:51:36

如果你正在寻找正弦波的斜率,它是通过标准微积分函数完成的。

线f(x)=sin(x)的斜率是f'(x)=cos(x)

然而,根据你的公式,我不能完全确定这就是你想要的。也许你需要澄清一下。

但是,如果您想要您的问题中显示的方法,我认为您对性能的担忧在这里是错误的。为了将此计算作为一个算术表达式进行,您必须根据您是在x轴的上方还是下方(以及您是否要从f(n -1 )过渡到f(n))来乘以-1。

一旦编译成机器语言,这可能会比简单的if语句序列慢(或至少不快)。

与所有优化一样,您应该首先选择最容易开发的方法,然后再查看它是否存在性能问题。否则,你可能会为了一个不必要的提升而浪费大量的精力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/891628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档