Fourier

Fourier is a modulation that generates a waveform by superimposing multiple Sine.

use autd3::modulation::Fourier;
use autd3::prelude::*;

#[allow(unused_variables)]
fn main() -> Result<(), Box<dyn std::error::Error>> {
let m = Fourier::new([Sine::new(100 * Hz), Sine::new(150 * Hz)])?;
    Ok(())
}
#include<autd3.hpp>
#include <autd3/modulation/fourier.hpp>

int main() {
const auto m =
    autd3::modulation::Fourier({autd3::modulation::Sine(100 * autd3::Hz),
                                autd3::modulation::Sine(150 * autd3::Hz)});

return 0; }
using AUTD3Sharp.Modulation;

using static AUTD3Sharp.Units;
var m = new Fourier([new Sine(100u * Hz), new Sine(150u * Hz), new Sine(200u * Hz)]);
from pyautd3 import Hz, Sine
from pyautd3.modulation import Fourier

m = Fourier([Sine(100 * Hz), Sine(150 * Hz)])

Phase parameter of Sine

For Fourier, Sine has a feature to specify the phase parameter.

use autd3::modulation::Fourier;
use autd3::prelude::*;
#[allow(unused_variables)]
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let m = Fourier::new([
        Sine::new(100 * Hz),
        Sine::new(150 * Hz).with_phase(PI / 2.0 * rad),
    ]);
    Ok(())
}
#include<autd3.hpp>
#include <autd3/modulation/fourier.hpp>
int main() {
const auto m = autd3::modulation::Fourier(
    {autd3::modulation::Sine(100 * autd3::Hz),
     autd3::modulation::Sine(150 * autd3::Hz)
         .with_phase(autd3::pi / 2.0f * autd3::rad)});
return 0; }
using AUTD3Sharp;
using AUTD3Sharp.Modulation;
using static AUTD3Sharp.Units;
using System;
var m = new Fourier([new Sine(100u * Hz), new Sine(150 * Hz).WithPhase(MathF.PI / 2.0f * rad)]);
import numpy as np
from pyautd3 import Hz, rad, Sine
from pyautd3.modulation import Fourier
m = Fourier([Sine(100 * Hz), Sine(150 * Hz).with_phase(np.pi / 2.0 * rad)])