写一个10ms 4:1的矩形波
时间: 2024-02-20 13:00:51 浏览: 39
以下是一个简单的 C++ 代码,可以生成 10ms 4:1 的矩形波:
```cpp
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
const int SAMPLE_RATE = 44100; // 采样率
const double PI = 3.14159265358979323846;
int main() {
double frequency = 440.0; // 频率
double duration = 0.01; // 时长
double amplitude = 0.5; // 幅度
int numSamples = int(duration * SAMPLE_RATE);
double* buffer = new double[numSamples];
int pulseWidth = int(SAMPLE_RATE / (4 * frequency)); // 脉宽
int halfPulseWidth = pulseWidth / 2;
for (int i = 0; i < numSamples; i++) {
int pulsePosition = i % pulseWidth;
bool isHigh = pulsePosition < halfPulseWidth;
buffer[i] = isHigh ? amplitude : -amplitude;
}
ofstream file("output.pcm", ios::out | ios::binary);
for (int i = 0; i < numSamples; i++) {
short sample = buffer[i] * 32767;
file.write((char*)&sample, sizeof(sample));
}
file.close();
delete[] buffer;
return 0;
}
```
此代码使用采样率为 44100,频率为 440Hz 的正弦波作为基础波形,然后根据 4:1 的占空比生成矩形波形,并将结果写入一个二进制文件中。最后,你可以使用音频编辑软件或者播放器播放该文件,以听到生成的矩形波。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)