Matlab - 数据的二阶导数

时间:2017-05-18 19:49:29

标签: matlab derivative

我们说我们有

[x]=[0.1 0.2 0.3 0.4]
[y]=[0.25 0.30 0.40 0.55]
y1=diff(y)./diff(x)
y2=diff(y1)./diff(x)

我得到的结果是

  

矩阵尺寸必须达成一致

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

我将您重定向到this文档。当你使用diff函数时,它实际上会返回一个带有m-1(m是它的长度)的向量,因为它的作用是输出:

diff(y1) = [y1(2)-y1(1) y1(3)-y1(2) ... y1(m)-y(m-1)]

如您所见,您将丢失一个值,从而解释您的错误。当你做最后一行时,它不能将diff(y1)除以diff(x),因为diff(y1)等于长度为2的向量而diff(x)等于长度为3的向量。

根据您的目的,您可以将代码更改为以下内容:

[x]=[0.1 0.2 0.3 0.4]
[y]=[0.25 0.30 0.40 0.55]
y1=diff(y)./diff(x)
y2=diff(y1)./diff(x(1:end-1))

如果你想近似y的推导,我真的建议你看看我链接的页面中的例子。 matlab文档总是提供有关如何使用其函数的示例,因此go take a look。根据文档,如果要计算向量y的部分导数,则需要x向量的步长。

x=[0.1 0.2 0.3 0.4]
y=[0.25 0.30 0.40 0.55]
x_step = 0.1
y1=diff(y)./x_step
y2=diff(y1)./x_step

答案 1 :(得分:0)

x=[0.1 0.2 0.3 0.4] ;
y=[0.25 0.30 0.40 0.55] ;

dy = gradient(y)./gradient(x) ;
d2y = gradient(dy)./gradient(x) ;