How can i find out all indices of nonzero elements in a sets of matrices?
    조회 수: 7 (최근 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!

