我想计算复数的指数,例如2+3i
。
我已经知道这个公式
exp( i z)= cos(z)+ i sin(z)
OpenCV中是否有内置函数?如果是的话,你能用一个例子向我解释一下吗?
答案 0 :(得分:1)
我认为您正在寻找的功能是atan2
。例如,对于数字2+3i
,您可以将角度计算为
T = atan2( 3.0, 2.0 );
答案 1 :(得分:1)
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;
}
答案 2 :(得分:0)
我不认为c中有任何内置函数可以解决这个问题。事实上,当我们在c中进行FFT变换时,我们使用了基本的cos + jsin版本