为DFT生成方波
Generating a square wave for DFT
我正在做一项任务,在频率为500Hz的方波上以20kHz的采样频率执行200点DFT,其振幅在0和20之间交替。
我正在使用c++,我已经知道如何编码DFT方程,我的问题是我在使用for循环的代码中表示方波时遇到了麻烦。
我仍然很困惑的是,在我的200点样本中,这个方波会有多少个周期。
谢谢
方波的周期为20000/500=40
点,因此在200点样本(200/40=5
)中,您将恰好有5个方波周期。
一个方波周期需要1/500秒。每个样品将是1/20000秒。一个简单的除法应该告诉你每个方波有多少个样本。
另一个划分会告诉你这些波在200点的窗口中可以容纳多少个
如果你的采样频率是20,000 Hz,你有一个频率为500 Hz的方波,这基本上意味着你的波每秒将有500个周期,这意味着你将在每20,000个样本中有500个周期。这意味着每个波周期需要40个样本(或点),所以如果你有200个点,这意味着你的DFT内应该有5个方波周期。
您可以通过在计算中包含单位来确保您的计算正确。周期的维度是时间,赫兹的维度是1.0/时间,样本是无量纲的。在编程上,您可以使用boost.units完成此操作。它会在编译时检查你的单元,如果你犯了错误,它会给你一个错误。
它还可以防止用户在代码中输入错误的单位。例如,通过输入20而不是20000的频率(认为你在测量千赫)
你的界面将是类似于
的东西using namespace boost::units;
set_period(quantity<si::time> period);
用户必须输入以秒为单位的时间,
set_period(5*si::seconds)
相关文章:
- 嵌入方指针压缩已禁用
- 为什么是谷神星协方差.计算()似乎永远运行而不返回?
- 从类型std::函数传递变量失败,尽管调用方期望的类型完全相同
- 将错误返回给调用方而不是立即在 C++ 中抛出错误是否是一种好的做法
- 反向斐波那契数列
- 使 \page 和 \subpage 参考 doxygen 中的方法文档
- Qt:如何使不兼容的发送方/接收方参数兼容?
- 为什么我的程序不能显示斐波那契级数?
- 为什么需要返回指针来利用协方差?
- 调用方如何知道 VARIANT 中何时有十进制?
- 从返回 std::optional of std::vector 的函数中获取结果到调用方
- 斐波那契数列部分和的最后一位数字
- "co_yield"是否可以在恢复协程时从调用方返回值?
- C++:Constexpr斐波那契数列评估
- 将第 n 个斐波那契数的大斐波那契数的最后一位编程.C++
- OpenCV C++,难以理解DFT的起始代码
- 形成一个斐波那契三角形,使得每个数字是上面左对角线或右对角线上两个数字的总和
- 从斐波那契序列 c++ 中的数组中查找正确的元素时出错
- 斐波那契数的方差
- 为DFT生成方波