これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.6.x を参照.
fourier
srcfourier は複数の正弦波成分を合成した振幅変調を生成する. 各成分を sine と同じ方法で計算し, 足し合わせて 1 つの波形にする.
fourier(&components, &option, &mut dst)?;fourier(components, option, dst)Modulation.Fourier(components, option, dst);| 引数 | 型 | 説明 |
|---|---|---|
components |
&[SineComponent<S>] |
合成する正弦波成分の配列 |
option |
&FourierOption |
追加オプション (下記参照) |
dst |
&mut Vec<u8> |
出力バッファ |
各 SineComponent は周波数 freq と SineOption の組である.
全成分の sampling_config は一致している必要があり, 異なるとエラーになる.
合成波形の長さは各成分の周期の最小公倍数である.
各サンプルは全成分の和にスケール scale_factor) を掛け, オフセット offset) を加えた値である.
SineComponent
Section titled “SineComponent”| フィールド | 型 | 説明 |
|---|---|---|
freq |
Freq<u32> 等 |
成分の周波数 |
option |
SineOption |
成分ごとの正弦波 Option |
SineComponent { freq: 100 * Hz, option: SineOption::default(),};SineComponent( 100.0 * Hz, SineOption(),)new SineComponent( 100 * Hz, new SineOption());FourierOption
Section titled “FourierOption”FourierOption { scale_factor, clamp, offset,}FourierOption( scale_factor, clamp, offset,)new FourierOption( scaleFactor, clamp, offset)| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
scale_factor |
Option<f32> |
None |
合成値に掛けるスケール. None 場合, 成分数の逆数 |
clamp |
bool |
false |
範囲外の値を [0, 255] clampするか |
offset |
u8 |
0 |
合成後に加える直流オフセット |
Example
Section titled “Example”use autd3_rs::units::Hz;use autd3_rs_modulation::{FourierOption, SineComponent, SineOption, fourier};
let mut dst = Vec::new();
fourier( &[SineComponent { freq: 100 * Hz, option: SineOption::default(), }], &FourierOption { scale_factor: None, clamp: false, offset: 0x00, }, &mut dst,)?;from autd3.units import Hzfrom autd3_modulation import ( FourierOption, SineComponent, SineOption, fourier, modulation_buffer,)
dst = modulation_buffer()
fourier( [ SineComponent( freq=100 * Hz, option=SineOption(), ) ], FourierOption( scale_factor=None, clamp=False, offset=0x00, ), dst,)using AUTD3;using static AUTD3.Units;
var dst = Modulation.ModulationBuffer();
Modulation.Fourier( new[] { new SineComponent( 100 * Hz, new SineOption() ), }, new FourierOption( scaleFactor: null, clamp: false, offset: 0x00 ), dst);