に異なる結果を与える私は1次元ベクトルを有します勾配の勾配。しかし、彼らは全く異なる結果をもたらします。勾配は、MATLAB
laplace = 0.2500 0.2500 0.2500 0.5000 -1.0000 2.2500 5.5000
pxx = 0.5000 0.7500 1.2500 0.2500 0.7500 3.5000 4.5000
に異なる結果を与える私は1次元ベクトルを有します勾配の勾配。しかし、彼らは全く異なる結果をもたらします。勾配は、MATLAB
laplace = 0.2500 0.2500 0.2500 0.5000 -1.0000 2.2500 5.5000
pxx = 0.5000 0.7500 1.2500 0.2500 0.7500 3.5000 4.5000
簡単な例:
gradient(gradient((1:10).^2))
1, 1.5, 2, 2, 2, 2, 2, 2, 1.5, 1
など
4*del2((1:10).^2)
2, 2, 2, 2, 2, 2, 2, 2, 2, 2
gradient
扱い異なる最初と最後の値(従ってgradient(gradient())
がdel2
が直線的に外挿し、異なる最初の2つのつと最後の2つのエントリを有しています) 。
del2
はgradient(gradient())
と互換性があるように4を掛けなければなりませんそして、あなたはコード(edit del2
またはedit gradient
)の内側に見える場合は、勾配が(以前を取って、次のポイントインテリアポイントの対称差を取ることがわかり等しく)。 del2
は同じですが1回だけ行います。したがって、gradient(gradient())
はもう少しスムーズになります。
[0.25 0.5 0.25]
のようなカーネルでdel2
の結果をスムーズにした場合、私はgradient(gradient())
と全く同じ結果を得ることができます。
p = [1 3 6 10 16 18 29];
conv(4 * del2(p), [0.5,1,0.5]/2, 'same')
0.75, 1, 1.25, 0.25, 0.75, 9, 13.25
gradient(gradient(p))
0.5, 0.75, 1.25, 0.25, 0.75, 3.5, 4.5
中央の3つの値が同じであることに注意してください。境界が異なるように処理されるため、各辺の2つの境界値が異なります。
'del2'は' 1'の線形間隔を1回と仮定しているかもしれませんが、 'gradient'はこれを2回します – Adriaan
道は違うけど、結果は変わりません – Bhoke