《用matlab求黑塞矩阵》由会员分享,可在线阅读,更多相关《用matlab求黑塞矩阵(2页珍藏版)》请在金锄头文库上搜索。
1、(1)clear all;close all;clc;img=double(imread(lena.jpg);m n=size(img);w=4;sigma=1.2;x y=meshgrid(-w:w,-w:w);%高斯函数对应的二阶偏导,如何求导数请自行脑补Dxx = 1/(2*pi*sigma4)*(x.2/sigma2-1)*exp(-(x.2+x.2)/(2*sigma2); Dyy = 1/(2*pi*sigma4)*(y.2/sigma2-1)*exp(-(x.2+y.2)/(2*sigma2);Dxy = 1/(2*pi*sigma6)*(x.*y)*exp(-(x.2+y.2)
2、/(2*sigma2);Ixx=imfilter(img,Dxx,replicate);Iyy=imfilter(img,Dyy,replicate);Ixy=imfilter(img,Dxy,replicate);H=cell(m,n);for i=1:m for j=1:n Hi,j=Ixx(i,j) Ixy(i,j);Ixy(i,j) Iyy(i,j); endend(2)function H=hessian(f,x,x0)% H=hessian(f,x) 计算表达式% H=hessian(f,x,x0) 计算hessian矩阵的值 x0为x的初值%$copyright by$ LUO sirswitch nargincase 1error(please input variables in f(x)case 2H=subhessian(f,x);case 3H=subhessian(f,x,x0);x=x0;H=subs(H);otherwiseerror(too many arguments or nothing) endfunction HH=subhessian(f,x,x0)n=length(x);J=jacobian(f,x);HH=;HH=sym(HH);for i=1:nHH(i,:)=jacobian(J(1,i),x);end