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; } } } }