Matlab-数据的二阶导数
假设我们有Matlab-数据的二阶导数,matlab,derivative,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) 我得到的结果是 矩阵尺寸必须一致 如何解决此问题?我将引导您使用文档。当您使用diff函数时,它实际上会返回一个长度为m-1m的向量,因为它所做的输出如下: diff(y1) = [y1(2)-y1(1) y1(3)-y1(2) ... y1(m)-y(m-1)] 正如您所看到的,您将丢失一个值,从而解释
[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)
我得到的结果是
矩阵尺寸必须一致
如何解决此问题?我将引导您使用文档。当您使用diff函数时,它实际上会返回一个长度为m-1m的向量,因为它所做的输出如下:
diff(y1) = [y1(2)-y1(1) y1(3)-y1(2) ... y1(m)-y(m-1)]
正如您所看到的,您将丢失一个值,从而解释您的错误。执行最后一行时,它不能将diffy1除以diffx,因为diffy1等于长度为2的向量,而diffx等于长度为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文档总是给出如何使用其函数的示例,因此。根据文档,如果你想计算向量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
检查是否需要转置其中一个矩阵以按预期操作。在最后一行中,diffy1是长度为2的向量,diffx是长度为3的向量,因此它会给您带来错误。虽然此代码段可能会解决此问题,但对其原因/方式的一些解释将大大改进此答案。请注意,计算边界梯度的方式与计算内部点的方式不同。这可能会导致不必要的最终效果。
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) ;