how to preallocate large logical array

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

 Akzeptierte Antwort

Image Analyst
Image Analyst am 13 Mär. 2012

10 Stimmen

A = false(numRows, numCols); % Or can use true()

Weitere Antworten (2)

James Tursa
James Tursa am 13 Mär. 2012

1 Stimme

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 am 23 Jun. 2018

1 Stimme

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 Kommentar

Or use false() as I suggested:
A = false(50, 50, 50, 50, 50);
It's a bit simpler and more direct.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Operators and Elementary Operations finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by