How can i find out all indices of nonzero elements in a sets of matrices?
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
Aman
il 2 Giu 2023
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!
Più risposte (1)
Vedere anche
Categorie
Scopri di più su Sparse Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!