how to build a 3d sparse matrix?
58 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi everyone: As we all know these has a sparse function in matlab, for example, there has two vector:
a = [1 2 3 1 5]; b=[1 2 4 1 6];
if I use spase function like this as follow:
sn = sparse(a,b,1);
It will shows the answer like this:
ans =
(1,1) 2
(2,2) 1
(3,4) 1
(5,6) 1
the third column means the count number of conresponding row and column in a and b. So my qusetion is if it is possible to build a 3d sparse matrix as the extend of the trandtional sparse function as follow: if there has two vector:
aa = [1 2 1 1 2 3]; bb=[1 2 1 1 2 4];cc=[1 2 1 1 2 5];
snn = sparse_3d(aa,bb,cc,1);
snn=
(1, 1, 1) 3
(2, 2, 2) 2
(3, 4, 5) 1
That is very nice of anyone can give me the answer. Thanks ahead! weihua
0 commentaires
Réponse acceptée
Matt J
le 27 Août 2015
Modifié(e) : Matt J
le 27 Août 2015
>> snn = ndSparse.build([aa',bb',cc'],1)
snn(:,:,1) =
(1,1) 3
snn(:,:,2) =
(2,2) 2
snn(:,:,5) =
(3,4) 1
3 commentaires
Matt J
le 6 Déc 2018
Modifié(e) : Matt J
le 6 Déc 2018
You can do that, but the more efficient way is to use ndSparse.build,
T=numel(time);
X=numel(x_vector);
Y=numel(y_vector);
coordinates=cell(T,1);
values=cell(T,1);
for t = 1:T
....somecalculations...
coordinates{t}=[xindices(:), yindices(:), xindices(:)*0+t];
values{t}=aboveresults(:);
end
coordinates=cell2mat(coordinates);
values=cell2mat(values);
AllResults = ndSparse.build(coordinates,values,[X,Y,T],NNZestimate);
Lucademicus
le 7 Déc 2018
Modifié(e) : Lucademicus
le 7 Déc 2018
Thank you for the suggestion, it greatly reduced the computational time!
Plus de réponses (1)
Steven Lord
le 27 Août 2015
No, sparse matrices are limited to 2 dimensions. If you feel strongly that MATLAB should extend sparse matrices to 3 or more dimensions, please send your use case (how you would use those higher dimensional sparse arrays) to Technical Support and ask them to include that information in the enhancement database.
0 commentaires
Voir également
Catégories
En savoir plus sur Sparse Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!