簡體   English   中英

如何使用CHOLMOD將元素添加到三元組矩陣?

[英]How to add elements to a triplet matrix using CHOLMOD?

任何人都可以給我一個簡單的例子,說明如何使用CHOLMOD將元素添加到三元組矩陣中。

我試過這樣的事情:

cholmod_triplet *A;
int k;

void add_A_entry(int r, int c, double x)
{
    ((int*)A->i)[k] = r;
    ((int*)A->j)[k] = c;
    ((double*)A->x)[k] = x;
    k++;
}

int main()
{
    k = 0;
    cholmod_common com;
    cholmod_start(&com);

    A = cholmod_allocate_triplet(202, 202, 202*202, -1, CHOLMOD_REAL, &com);
    add_A_entry(2, 2, 1.);
    add_A_entry(4, 1, 2.);
    add_A_entry(2, 10, -1.);

    cholmod_print_triplet(A, "A", &com);

    cholmod_finish(&com);
    return 0;
}

但是,這不會向矩陣添加任何元素。 我只是得到輸出:

CHOLMOD triplet: A:  202-by-202, nz 0, lower.  OK

當然,我試圖通過搜索和CHOLMOD文檔找到解決方案,但我沒有找到任何幫助。

cholmod_allocate_triplet()設置A->nzmax ,在你的情況下是202 * 202。 這只是定義了可用於添加三元組的空間。 矩陣中三元組的實際數量為A->nnz ,由cholmod_allocate_triplet()設置為零。

應使用A->nnz代替變量k

蒂姆戴維斯(CHOLMOD作者)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM