Constructing full matrix like a sparse one

I was wondering if there was a way to construct a full matrix like you would a sparse matrix.
I'm working with single photon data so my images are histograms of counts that I read from the bits in my data stream. Due to how sparse works I've found that it is faster to do my histogramming using sparse with 4 inputs, S = sparse(i,j,v,m,n), as it sums values that have the same indicies but this is innefficent as depending on how I want the data read it results in arrays with very low sparsity. I was wondering if there was an equivalent way to do this immediately into a full array.
Here's the relevant part of my code
% number of exposures for macro time
frameNos = 0:macroFrames:NFrames;
fBins = uint32(discretize(f,frameNos));
nExps = NFrames/macroFrames;
% generates sparse array Y*X*B x F
bin1 = y+(x-1).*NPixHeight+(b-1).*NPixHeight.*NPixWidth;
bin2 = fBins;
SpCounts = sparse(bin1,bin2,1,NPixHeight*NPixWidth*NBins,nExps);
Generally macroFrames is large so SpCounts is not sparse and therefore very memory inefficient. I imagine appending full() would fix my memory problem but I'm curious if going straight to a full array would be faster?

 Akzeptierte Antwort

Steven Lord
Steven Lord am 3 Aug. 2023

1 Stimme

It doesn't have exactly the same syntax as the sparse function, but I'd recommend you look at the accumarray function.

1 Kommentar

Ife
Ife am 3 Aug. 2023
this is exactly what I needed, thank you so much.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Sparse Matrices finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2022a

Gefragt:

Ife
am 3 Aug. 2023

Kommentiert:

Ife
am 3 Aug. 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by