Пример #1
0
void QFilter::Decimate(CPX &in, CPX &out, int downrate) {

	int newsize = qRound((float) m_size/downrate);

	//memset(out, 0, newsize * sizeof(CPX));
	//memset(tmp, 0, m_size * sizeof(CPX));
	out.resize(newsize);
	tmp.resize(m_size);
	//memcpy(tmp, in, m_size * sizeof(CPX));
	memcpy(tmp.data(), in.data(), m_size * sizeof(cpx));

	for (int j = 0; j < newsize; j++) {
		for (int k = 0; k < downrate; k++) {
		//for (int k = 0; k < downrate - 1; k++) {

			if (j * downrate + k < m_size) {

				out[j].re += tmp.at(j * downrate + k).re;
				out[j].im += tmp.at(j * downrate + k).im;
			}
		}
	}
}