-
January 6th, 2022, 02:16 PM
#1
complex signal
hello i would like to ask how to generate the complex signal f(t)=exp^(j*omega*t), j=sqrt(-1), in C++. thanks very much
-
January 6th, 2022, 05:12 PM
#2
Re: complex signal
Originally Posted by sddfds
hello i would like to ask how to generate the complex signal f(t)=exp^(j*omega*t), j=sqrt(-1), in C++. thanks very much
C++ has a standard library to handle complex numbers,
https://en.cppreference.com/w/cpp/numeric/complex
Say you have,
f(t) = exp^(j*omega*t)
Note that the imaginary unit j plays a role in formula manipulations only. It is never calculated as sqrt(-1). This is because that number does not exist for real. It is imaginary. So in numeric calculations, a complex number is represented by a tuple of two real numbers, meaning a + j*b is represented by (a,b). Using (a.b) notation the f(t) formula becomes,
f(t) = exp^((0, omega*t))
Now, according to Euler's formula,
https://en.wikipedia.org/wiki/Euler%27s_formula
the result of the f(t) formula should equal the complex number (cos(omega*t), sin(omega*t)). That is, this equality is supposed to hold,
(cos(omega*t), sin(omega*t)) == exp^((0, omega*t))
The omega*t number will be interpreted as an angle by the sin and cos functions. Let us set it to 135 degrees (3*PI/4 radians) and check it out in a C++ program,
Code:
#include <numbers>
#include <complex>
#include <iostream>
void test() {
using Complex = std::complex<double>;
const double PI = std::numbers::pi; // since C++ 20
const double angle_135 = 3.0*PI/4.0;
Complex f = std::exp(Complex(0.0, angle_135));
std::cout << f << std::endl;
std::cout << std::cos(angle_135) << "," << std::sin(angle_135) << std::endl;
}
The result becomes (-0.707107, 0707107) in both cases as the Euler formula predicts. Both ways will give you f(t).
Last edited by wolle; January 9th, 2022 at 02:37 AM.
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|