Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab-数据的二阶导数_Matlab_Derivative - Fatal编程技术网

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) ;