Я хочу узнать показатель сложного числа, например: 2+3i
.
Как я могу найти значение? я знаю это
e^(jT)=cos(T)+jsin(T)
Есть ли встроенная функция в OpenCv? Если да, не могли бы вы это объяснить мне на примере.
Что не так с cexp( )
объявленной в complex.h
? Почему вы хотите использовать OpenCV вместо стандартной библиотеки?
#include <complex.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
double complex z = 2 + 3*I;
double complex w = cexp(z);
printf("%f + %fi\n", creal(w), cimag(w));
return 0;
}
Если вы ориентируетесь на платформу, которая не предоставляет сложные типы или операции, вы можете использовать следующее для быстрого и грязного решения:
struct mycomplex { double real; double imag; }
struct mycomplex my_exp(struct mycomplex z) {
struct mycomplex w;
w.real = exp(z.real)*cos(z.imag);
w.imag = exp(z.real)*sin(z.imag);
return w;
}
И, наконец, поскольку вы используете MSVC, очень рудиментарный пример C++:
#include <complex>
#include <iostream>
int main(int argc, char *argv[]) {
auto z = std::complex<double>(2,3);
auto w = std::exp(z);
std::cout << w << std::endl;
return 0;
}
#include <complex.h>
?
Я думаю, что функция, которую вы ищете, - atan2
. Например, для числа 2+3i
вы вычисляете угол как
T = atan2( 3.0, 2.0 );
Я не думаю, что есть какая-либо функция inbuild в c, чтобы решить эту проблему. фактически, когда мы выполняли преобразование FFT в c, мы использовали базовую версию cos + jsin