How to separate two matrices from a single matrice?
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
the cyclist
2023-2-8
编辑:the cyclist
2023-2-8
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 个评论
更多回答(0 个)
另请参阅
类别
在 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!