void TurboCode::SeparateReceivedSignal(const itpp::cvec &receivedSignal, itpp::cvec *in1, itpp::cvec *in2) const { int block = interleaver_.size(); itpp::cvec r(block), parity1(block), parity2(block); for (int i = 0; i < block; ++i){ r[i] = receivedSignal[3*i]; parity1[i] = receivedSignal[3*i + 1]; parity2[i] = receivedSignal[3*i + 2]; } // for i itpp::cvec interleaved_r = Interleave(r, interleaver_); in1->set_size(2*block); in2->set_size(2*block); for (int i = 0; i < block; ++i){ (*in1)[2*i] = r[i]; (*in1)[2*i + 1] = parity1[i]; (*in2)[2*i] = interleaved_r[i]; (*in2)[2*i + 1] = parity2[i]; } // for i }
int main (int argc, char *argv[]) { if (argc >= 2) { int num = atoi(argv[1]); std::cout << "Num is " << num << " and parity is " << parity1(num) << "." << std::endl; } }