How can i find out all indices of nonzero elements in a sets of matrices?
3 次查看(过去 30 天)
显示 更早的评论
I have 19 sparse matrices which are 30000 * 30000 big. Each matrix is slightly different from another. How can i use [row, col] = find() function to get row and col vectors, which contain all position of nonzero element?
For example, A = [1 0; 0 0], B = [ 0 1; 0 0], C = [ 0 0 ; 1 0], D = [ 0 1; 1 0]
row = [ 1 1 2], col = [1 2 1]
0 个评论
采纳的回答
Aman
2023-6-2
Hi Jiahong,
Assuming that you want to have unique pairs of row and column, the following code should work:
% Create a cell array of example sparse matrices
A = sparse([1 0; 0 0]);
B = sparse([0 1; 0 0]);
C = sparse([0 0; 1 0]);
D = sparse([0 1; 1 0]);
matrices = {A, B, C, D};
% Initialize empty row and column vectors
row = [];
col = [];
% Loop over each matrix in the cell array
for i = 1:numel(matrices)
% Use find to get the row and column indices of all nonzero elements
[r, c, ~] = find(matrices{i});
% Append the row and column indices to the overall row and column vectors
row = [row; r];
col = [col; c];
end
% Remove duplicate pairs from row and col
[row_col, idx] = unique([row, col], 'rows');
row = row_col(:,1);
col = row_col(:,2);
% Display the row and column vectors
row
col
If you want all pairs of row and column, use the following code:
% Create a cell array of example sparse matrices
A = sparse([1 0; 0 0]);
B = sparse([0 1; 0 0]);
C = sparse([0 0; 1 0]);
D = sparse([0 1; 1 0]);
matrices = {A, B, C, D};
% Initialize empty row and column vectors
row = [];
col = [];
% Loop over each matrix in the cell array
for i = 1:numel(matrices)
% Use find to get the row and column indices of all nonzero elements
[r, c, ~] = find(matrices{i});
% Append the row and column indices to the overall row and column vectors
row = [row; r];
col = [col; c];
end
% Display the row and column vectors
row
col
Hope this helps!
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrices and Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!