MATLAB Answers

C Zeng

About running matlab in linux.

Asked by C Zeng
on 26 Jun 2012

Hello, I run the same program in Windows it shows Out of memory. Type HELP MEMORY for your options. Then I run it in Linux, it runs for a while and then shows killed.

does it mean it is out of memory or something else? How to resolve it? Thanks.




No products are associated with this question.

2 Answers

Answer by tlawren
on 26 Jun 2012
 Accepted answer

If you run some code on Windows and get an "Out of memory" error and then run the same code on Linux (on the same hardware) and Matlab just crashes, then yes, it might mean that you are out of memory in Linux too. Can you provide more details? What does your code do?

If you are in fact running out of memory, then the most obvious solution is to get more memory (if you can). Beyond that, you will have to re-write your code to work under your memory constraints. For instance, if you have big data matrices just sitting around doing nothing, then clear them away to make room for things you will use. If you make use of a lot of intermediate variables, try overwriting only a few variables instead.


C Zeng
on 26 Jun 2012

Oh, yes I tried it. Conventionally it allocates data for double precision, and if you convert it then it will change the precision. And I think it is better for me to convert it to int to reduce memory space. Let me try uint16 or 32 then. Thank you!

When you use the class type parameter to zeros() or ones() it never allocates the array as double precision, so it is better especially when you use large arrays.

C Zeng
on 27 Jun 2012

Thank you!

Answer by C Zeng
on 26 Jun 2012

Also I find the answer to convert a matrix to single precision, that is 'single'. But I tried this command, but it still gives a double precision.

For example, a=ones(2,3,'single'); 1.5*a shows a double matrix. Could anyone explain it? Thanks.


C Zeng
on 28 Jun 2012

Oh, so you mean ones() or zeros() is numeric array and they cannot have different data types, only defining cell(dim1,dim2..) can have different types for each dimension, right?

For example a=cell(2,4,3), and I want first matrix(:,:,1) is uint8, second is single, third is double. after definition, I need to convert as: uint8 a(:,:,1); single a(:,:,2);double a(:,:,3)

And will they keep this precision till the end of program? Is there a better way? Thank you!

C Zeng
on 28 Jun 2012

Seems not so, it shows Conversion to uint8 from cell is not possible.

cell arrays have potentially data types per entry, not per dimension.

num2cell() converts numeric arrays into cell arrays.

Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!