how to build a 3d sparse matrix?

87 views (last 30 days)
UTA
UTA on 27 Aug 2015
Edited: Lucademicus on 7 Dec 2018
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

Accepted Answer

Matt J
Matt J on 27 Aug 2015
Edited: Matt J on 27 Aug 2015
You could try my ndSparse class ( Download ),
>> snn = ndSparse.build([aa',bb',cc'],1)
snn(:,:,1) =
(1,1) 3
snn(:,:,2) =
(2,2) 2
snn(:,:,5) =
(3,4) 1
  3 Comments
Matt J
Matt J on 6 Dec 2018
Edited: Matt J on 6 Dec 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
Lucademicus on 7 Dec 2018
Edited: Lucademicus on 7 Dec 2018
Thank you for the suggestion, it greatly reduced the computational time!

Sign in to comment.

More Answers (1)

Steven Lord
Steven Lord on 27 Aug 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.

Categories

Find more on Sparse Matrices 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!