我们说我们有
[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)
我得到的结果是
矩阵尺寸必须达成一致
如何解决这个问题?
答案 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) ;