How to separate two matrices from a single matrice?
    6 views (last 30 days)
  
       Show older comments
    
Hi, I would like to extract two matrix B and C from a matrix A to get A=B+C, where A=sparse(N,N) with N is a number. 
Since index of A has two types : index = index_1 + index_2, 
so the matrix B and C should be like
 B= [A(i,j) , for i∈index_1 and j∈index;
       0        otherwise]
 C = [A(i,j) , for i∈index_2 and j∈index; 
        0        otherwise]
For example  A= sparse(9,9):
A = [ 1 2 3 
        5 6 7 
       8 9 10]; 
index = {1,2,...,9},  index_1 = {2,4,6,8}, index_2={1,3,5,9}
how to write in matlab 
B = sparse(9,9); C=sparse(9,9);
B = A(index_1,:)  and C = A(index_2,:)
       to get
B = [ 0 2 0 
        5 0 7 
       0 9 0];    
C = [ 1 0 3 
        0 6 0 
       8 0 10];    
0 Comments
Accepted Answer
  the cyclist
      
      
 on 8 Feb 2023
        
      Edited: the cyclist
      
      
 on 8 Feb 2023
  
      Here is one way:
% Inputs
A = [ 1 2  3 
      5 6  7 
      8 9 10];
index_1 = [2,4,6,8];
index_2 = [1,3,5,9];
% Get the dimensions of A
[m,n] = size(A);
% Initialize the B and C as sparse arrays that are the size of A
[B,C] = deal(sparse(m,n));
% Assign index_1 elements to B
B(index_1) = A(index_1)
% Assign index_2 elements to C
C(index_2) = A(index_2)
2 Comments
More Answers (0)
See Also
Categories
				Find more on Matrix Indexing in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


