How to create a "scatter" matrix without using a for loop?
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I am trying to create a matrix given size, x-coordinate, y-coordinate, and value. Ideally, I would like to avoid using a for loop as I usually work with large data sets.
For example, I have a 4x4 zero matrix.
M = zeros(4)
row = [1,2,3];
col = [2,4,4];
val = [123,321,456];
Is there a function or fast method turn this into:
M = [0 123 0 0;
0 0 0 321;
0 0 0 456;
0 0 0 0]
0 Commenti
Risposta accettata
Cris LaPierre
il 3 Giu 2023
M = zeros(4);
row = [1,2,3];
col = [2,4,4];
val = [123,321,456];
ind = sub2ind(size(M),row,col)
M(ind) = val
0 Commenti
Più risposte (1)
Steven Lord
il 3 Giu 2023
row = [1,2,3];
col = [2,4,4];
val = [123,321,456];
M = accumarray([row.', col.'], val.', [4 4])
0 Commenti
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!