Linear Problem Matrix without For Loop
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Andreas
am 22 Jan. 2015
Kommentiert: Andreas
am 22 Jan. 2015
Hello all, I have a problem. Suppose I have a matrix like this:
K= [1 2 4 3 4 6 ]
And I want to end with a matrix like this
L=[1 0 0 0 0 ; 0 1 0 0 0 ; 0 0 0 1 0 ; 0 0 1 0 0 ; 0 0 0 1 0 ; 0 0 0 0 1]
As you can see the number of columns is the size of unique(K) and row is the length(K) How can I create a matrix like L WITHOUT using for.? I tried ind2sub but I failed.* * * * Maybe a solution could be to have a matrix like this
U= [1 2 4 3 4 5 ; 1 2 4 3 4 6]
where the first row is the index. Thank you all!!
1 Kommentar
Akzeptierte Antwort
Andreas
am 22 Jan. 2015
4 Kommentare
Guillaume
am 22 Jan. 2015
Bearbeitet: Guillaume
am 22 Jan. 2015
Well, I'd assume 6 means 6th column, 10 mean 10th column, etc.
If the numbers don't mean anything other than specifying an ordering, then do:
[~, ~, K] = unique(K);
before any of my answers.
K = 'ACPIPZ'; %you can even use letters since the numbers have no meaning.
%challenge: find an English word that gives the same result.
[~, ~, K] = unique(K);
L = full(sparse(1:numel(K), K, 1))
is still a lot simpler.
Weitere Antworten (2)
Guillaume
am 22 Jan. 2015
Bearbeitet: Guillaume
am 22 Jan. 2015
K = [1 2 4 3 4 6 ];
L = zeros(numel(K), max(K));
L(sub2ind(size(L), 1:numel(K), K)) = 1
or using sparse matrices:
L = full(sparse(1:numel(K), K, 1))
or using accumarray:
L = accumarray([1:numel(K); K]', ones(numel(K), 1))
1 Kommentar
John D'Errico
am 22 Jan. 2015
Those would have been my solutions, preferring either sparse or accumarray, depending on whether the result is desired to be full or sparse in the end.
John D'Errico
am 22 Jan. 2015
Time to learn how to use sparse.
Or, if you prefer to work with full matrices, learn to use accumarray.
Or, if those options are not to your liking, learn to use use subsindx. That will take slightly more effort though.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Sparse Matrices finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!