簡體   English   中英

快速設置稀疏矩陣的多個值

[英]Fast way to set many values of sparse matrix

我在MATLAB中有一個稀疏的5018x5018矩陣,它有大約100k的值設置為1(即大約99.6%為空)。

我試圖將這些零中的大約5%翻轉為1(即大約1.25m條目)。 我想要翻轉的矩陣中有x和y索引。

這是我做的:

sizeMat=size(network);
idxToReplace=sub2ind(sizeMat,x_idx, y_idx);
network(idxToReplace) = 1;

這非常慢,尤其是最后一行。 有沒有辦法讓這個操作運行得更快,最好不使用mex文件?

這應該更快:

idxToReplace=sparse(x_idx,y_idx,ones(size(x_idx),size(matrix,1),size(matrix,2)); % Create a sparse with ones at locations
network=network+idxToReplace; % Add the two matrices

我認為你的解決方案非常慢,因為你用你的點創建了一個1.26e6邏輯數組,然后將它們存儲在稀疏矩陣中。 在我的解決方案中,您只創建一個稀疏矩陣並將兩者相加。

暫無
暫無

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

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