int main()
{
	int i, j;
	int ysize = 256;
	int xsize = 256;
	unsigned char **data = Init2DChar(data, xsize, ysize);
	float **spectrum = Init2DFloat(spectrum, xsize*2, ysize*2);

	ReadIntoArray("mri", 256, 256, data);

	for (i = 0; i < ysize; i++)
	{
		for (j = 0; j < xsize; j++)
		{
			spectrum[i][j] = (float)data[i][j];
		}
	}
	
	float **real = Init2DFloat(real, xsize, ysize);
	float **imag = Init2DFloat(imag, xsize, ysize);

	four2(spectrum, 256, 256, 1, real, imag);

	float** filter = Init2DFloat(filter, xsize * 2, ysize * 2);

	for (i = 0; i < ysize; i++)
	{
		for (j = 0; j < xsize; j++)
		{
			filter[i][j] = (float)spectrum[i][j];
		}
	}


	Butterworth(filter, real, imag, xsize, ysize, 1);
	NormalizeArray(spectrum, 256, 256);

	WriteIntoArray("mri", "_spectrum", 256, 256, spectrum);

	four2(filter, 256, 256, -1, real, imag);
	WriteIntoArray("mri", "_butterworth", 256, 256, filter);


	free(data);
	free(spectrum);
	free(real);


	return 0;
}
Exemplo n.º 2
0
static PyObject *mkfft_wrap(PyObject *self, PyObject *args)
{
    int type, len;
    double lo, hi, srate, bwfreq, t;
    PyObject *o;
    FILTER *handle;
    double *filter;

    if (!PyArg_ParseTuple(args, "dddi:mkfft", &lo, &hi, &srate, &len)) {
	return NULL;
    }

    handle = (FILTER *)malloc(sizeof(FILTER));
    handle->type = FILTER_TYPE_FFT;
    if ((filter = (double *)malloc(len * sizeof(double))) == NULL) {
	PyErr_SetString(PyExc_RuntimeError, "malloc() failed");
	return NULL;
    }
    handle->gain = filter;
    handle->n = len;

    if (hi > 0. && lo > 0. && lo < hi) {
	type = BANDPASS;
    } else if (hi > 0. && lo > 0. && lo > hi) {
	type = BANDREJECT;
	t = lo;
	lo = hi;
	hi = t;
    } else if (lo > 0. && hi == 0.) {
	type = HIGHPASS;
    } else if (lo == 0. && hi > 0.) {
	type = LOWPASS;
    }
    Butterworth(handle->gain, len, lo, hi, srate, type, MAXORDER, &bwfreq);

    o = PyCObject_FromVoidPtr(handle, free_filter);
    return o;
}