how to preallocate large logical array

112 vues (au cours des 30 derniers jours)
Michael
Michael le 13 Mar 2012
Commenté : Image Analyst le 23 Juin 2018
Hi
I'm trying to pre-allocate a huge logical matrix but I can't work out how to do it without creating a normal matrix then converting it (this intermediate step uses too much memory).
I've been trying A = zeros(50,50,50,50,50, 'uint8'); Which works to create one from 0-255 but I can't find what to write in the quotes to make it logical rather than numeric, and suspect there may be some kind of trick that I'm missing.
Thanks Mike

Réponse acceptée

Image Analyst
Image Analyst le 13 Mar 2012
A = false(numRows, numCols); % Or can use true()
  1 commentaire
Michael
Michael le 13 Mar 2012
perfect, thanks

Connectez-vous pour commenter.

Plus de réponses (2)

James Tursa
James Tursa le 13 Mar 2012
Another alternative (assumes that all of the elements are filled in downstream):
A = uninit(numRows, numCols, 'logical');
You can find uninit on the FEX here:

Ingrid
Ingrid le 23 Juin 2018
I am not sure in which release it started working but at least in R2018a
A = zeros(50,50,50,50,50, 'logical');
works.
  1 commentaire
Image Analyst
Image Analyst le 23 Juin 2018
Or use false() as I suggested:
A = false(50, 50, 50, 50, 50);
It's a bit simpler and more direct.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating and Concatenating 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!

Translated by