2015-06-24 75 views
0

對於矩陣A和行「我」在Matlab中,我將做到以下幾點:徵庫:在稀疏矩陣*行*設置所有非零元素,以零

A(i,:) = zeros(size(A(i,:)); 

愚蠢的方式做同樣的情況是遍歷整行並將非零值設置爲零。這是不適合的,因爲我在這裏處理巨大的矩陣(200,000列)。

有沒有簡單快捷的方法來做到這一點?我在Eigen中使用SparseMatrix類。我也知道每行最多有3個非零值。我不知道在哪裏。

我需要這個在矩陣中用新值編輯幾行行。我的想法是,我首先將整行設爲零,然後將我的值分配給同一行中的某些元素。

StackOverflow上的以下question是相關的,但不幸的是沒有答案。

+0

我不清楚你在做什麼。該matlab代碼密集,不稀疏。您是否想準備一個稀疏矩陣,以避免後續插入成本,因爲您知道每行至多有3個非零值? – user2658323

回答

0

在Matlab代碼的等效以上可以使用setZero函數來實現,如下所示:

A.row(i).setZero(); 

注意,這適用於稠密矩陣,不稀疏的。如果您希望大小是動態的,建議使用MatrixXd類。

相關問題