matlab - 设置稀疏矩阵多个值的快速方法

标签 matlab matrix sparse-matrix

我在 MATLAB 中有一个稀疏的 5018x5018 矩阵,它有大约 100k 个值设置为 1(即,大约 99.6% 是空的)。

我正在尝试将这些零中的大约 5% 翻转为 1(即,大约 125 万个条目)。我在要翻转的矩阵中有 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 逻辑数组,然后将它们存储在稀疏矩阵中。在我的解决方案中,您只需创建一个稀疏矩阵并将两者相加即可。

关于matlab - 设置稀疏矩阵多个值的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32443031/

相关文章:

python - 高效地序列化/反序列化 SparseDataFrame

sparse-matrix - 使用稀疏数据进行特征缩放/归一化

tensorflow 在稀疏变量上做梯度

matlab - 在 Matlab 中查找具有高互相关矩阵的组

matlab - MATLAB 函数 imread 和 imwrite 是否属于图像处理工具包?

matrix - 非正定矩阵的 Eigen 共轭梯度

java - 在 Android 2.1 中使用 getRotationMatrix 和 getOrientation

c - 我们如何在网格中找到两条权重最大的路线?

image - MATLAB:如何更改imhist的颜色和窗口的大小?

matlab - 200如何解决!在Matlab代码中?