System.outofmemoryexception

An unhandled exception of type ‘System.OutOfMemoryException’ occurred in AForge.exe.


 COMPLEX[] Fourier;  


 public void ForwardFFT()
        {
            //Initializing Fourier Transform Array
            int i,j;
           
            Fourier = new COMPLEX[320 * 240];
            Output = new COMPLEX[Width*Height];
            //Copy Image Data to the Complex Array
            for (i=0;i<=Width -1;i++)
                for (j = 0; j <= Height - 1; j++)
                {
                   // Fourier[i][j].real =(double) GreyImage[i][j];
                   // Fourier[i][j].imag = 0;
                }
            //Calling Forward Fourier Transform
          //  Output= FFT2D( Fourier, nx, ny, 1);
            return;
        }

when Fourier = new COMPLEX[320 * 240]; called this exception shows. how to solve

@ biren - Whats a complex?
I would imagine that it is creating an array of objects that is consuming more ram and is available for your device.

I bet reducing your memory consumption will help.

Or buy a mainboard with more memory to start with; but the real issue is you have to THINK SMALL.

@ Justin - complex is a structure.


  struct COMPLEX
    {
        public double real, imag;
        public COMPLEX(double x, double y)
        {
            real = x;
            imag = y;
        }
        public float Magnitude()
        {
            return ((float)ElzeKool.exMath.Sqrt(real * real + imag * imag));
        }
        public float Phase()
        {            
             return ((float)ElzeKool.exMath .Atan(imag / real));
        }
    }

@ biren - that one line is creating 153600 doubles which will be using alot of your poor wee processors resources…

@ Brett - how to reducing memory?

@ Justin - means? please explain with some details

@ biren - a double needs 8 bytes of memory.

Complex is 2 doubles so 16 bytes of memory…

Fourier = new COMPLEX[320 * 240]; is creating an array of 76800 complex items which needs 1228800 bytes of ram - 1.17mb of ram…

Hence why you are running out of memory

@ Justin - means complex is not possible in microframework?

@ biren - Complex can still be used but not with such a large array on your board.

@ Justin - ok thanks