How to quickly assign the values of a matrix using a given array?
2 views (last 30 days)
Show older comments
Dear All,
I have an array A which contains two columns of integers. I want to build a matrix B in the following way.
For example,
A = [2 9; 1 5; 8 3]
The matrix B should be suilt as follows:
B = [0 1 0 0 0 0 0 0 -1 0; 1 0 0 0 -1 0 0 0 0 0; 0 0 -1 0 0 0 0 1 0 0]
How can I create matrix B for a goven A?
Thanks.
Benson
0 Comments
Accepted Answer
DGM
on 23 May 2021
Edited: DGM
on 23 May 2021
Here is one way:
A = [2 9; 1 5; 8 3]
s = [size(A,1) 10]; % you're going to have to specify the output width
B = zeros(s);
B(sub2ind(s,(1:s(1)).',A(:,1))) = 1;
B(sub2ind(s,(1:s(1)).',A(:,2))) = -1;
B % show the result
2 Comments
DGM
on 24 May 2021
I really have no familiarity with handling sparse matrices or how to optimize for them. I'm sure someone else can though.
More Answers (1)
Walter Roberson
on 23 May 2021
S = 10;
A = [2 9; 1 5; 8 3]
(A(:,1) == (1:S))-(A(:,2) == (1:S))
0 Comments
See Also
Categories
Find more on Downloads 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!