如何在 MATLAB 中使用带有函数的 pcg

How to use pcg with a function in MATLAB

我将在 MATLAB 中使用共轭梯度法求解一个反问题 AX=b。我想在 MATLAB 中使用 pcg 函数,据我所知,我可以使用一个函数来代替矩阵 A

我有一个函数,例如 afun,它有一些条目。在文档中,我看到 afun 函数在没有条目的 pcg 函数中输入,但是,当我这样做时,出现错误 not enough input arguments。我使用这样的代码:

b = afun(ent1,ent2);
x = pcg(@afun,b,tol,max_iter);

我应该如何在 pcg 中使用我的函数?

根据文档,函数句柄应具有签名 afun(x) 和 return A*x.

您的函数显然需要两个输入...您需要使用匿名函数来包装调用,如下所示:

% I dont know what these ent1/ent2 represent exactly,
% so you must complete the ".." part first
fcn = @(x) afun(x, ..)

% now you can call PCG
x = pcg(fcn, b, tol, maxiter);

有一个文档页面解释了如何 parameterize functions to pass extra args using function handles