У меня есть код для вас, ребята. Это первый шаг алгоритма расщепления для быстрого преобразования Фурье.Фаза переупорядочения FFT
Что должен сделать алгоритм, так это переупорядочить массив таким образом, чтобы каждый элемент на входе был смещен в «двоичном зеркальном» положении вывода.
Например, элемент Х [4] будет находиться в положении X [1], так как зеркальная представление 100 001.
До здесь все понятно. Однако алгоритм, который выполняет такое переупорядочение, не является. По крайней мере, я с трудом понимаю.
Что делает вторая внутренняя петля?
// N is the length of the array
// p is the number of bits needed to represent the index
for(int n=0; n<N; n++) {
int j=0;
int m=n;
for(int i=0; i<p; i++) {
j = 2∗j + m%2; m = m/2;
}
if (j>n) {
complex<double> h;
h = X[j];
X[j] = X[n];
X[n] = h;
}
}
У вас есть обозначение C, но используйте комплекс, тип C++. Каким образом мы будем с этим? –
Это особенно отвратительный способ битового обратного индекса – harold
Непонимайте насчет вопроса здесь: '1',' 2' и '4', когда" binarly mirroror "все становятся' 1'. –