spsolve与spdiag在matlab中的交替使用/

2024-04-19 18:22:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python代码,我正试图转换成Matlab代码。该代码用于波的基线校正。在

def baseline_als(y, lam, p, niter=20):
    L = len(y)
    D = sparse.csc_matrix(np.diff(np.eye(L), 2))
    w = np.ones(L)
    for i in xrange(niter):
        W = sparse.spdiags(w, 0, L, L)
        Z = W + lam * D.dot(D.transpose())
        z = spsolve(Z, w*y)
        w = p * (y > z) + (1-p) * (y < z)
    return z

我试过像这样转换。在

^{2}$

然而,在octave/matlab中没有名为spsolvespdiag的函数。有什么其他的功能可以用吗?在


Tags: 代码lendefnpmatrixsparsematlabcsc
1条回答
网友
1楼 · 发布于 2024-04-19 18:22:32

如果你知道spsolve是做什么的,这很简单。让我们集中精力,as ^{} seems easier to solve,不是吗?在

spsolve“求解稀疏线性系统Ax=b,其中b可以是向量或矩阵。”

这正是MATLABs\mldivide所做的,它解决了一个Ax=b,for x的系统。很高兴,MATLAB可以用相同的函数处理稀疏矩阵和稠密矩阵,因此更改应该很容易:

发件人:

z = spsolve(Z, w*y)

收件人:

^{pr2}$

相关问题 更多 >