Constructing full matrix like a sparse one

2 visualizaciones (últimos 30 días)
Ife
Ife el 3 de Ag. de 2023
Comentada: Ife el 3 de Ag. de 2023
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?

Respuesta aceptada

Steven Lord
Steven Lord el 3 de Ag. de 2023
It doesn't have exactly the same syntax as the sparse function, but I'd recommend you look at the accumarray function.
  1 comentario
Ife
Ife el 3 de Ag. de 2023
this is exactly what I needed, thank you so much.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by