写一个将三频率四步相移的多频外差C++代码
时间: 2023-03-26 08:00:22 浏览: 267
以下是一个将三频率四步相移的多频外差C代码的示例:
#include <stdio.h>
#include <math.h>
#define PI 3.14159265358979323846
int main()
{
double freq1 = 100.; // 第一个频率
double freq2 = 200.; // 第二个频率
double freq3 = 300.; // 第三个频率
double phase1 = .; // 第一个相位
double phase2 = 2. * PI / 3.; // 第二个相位
double phase3 = 4. * PI / 3.; // 第三个相位
double sampleRate = 44100.; // 采样率
double duration = 5.; // 信号持续时间
double amplitude = .5; // 信号幅度
int numSamples = (int)(duration * sampleRate); // 样本数
double *signal = (double *)malloc(numSamples * sizeof(double)); // 信号数组
for (int i = ; i < numSamples; i++)
{
double t = (double)i / sampleRate; // 当前时间
double s1 = amplitude * sin(2. * PI * freq1 * t + phase1); // 第一个频率的信号
double s2 = amplitude * sin(2. * PI * freq2 * t + phase2); // 第二个频率的信号
double s3 = amplitude * sin(2. * PI * freq3 * t + phase3); // 第三个频率的信号
signal[i] = s1 + s2 + s3; // 信号叠加
}
// 将信号写入文件
FILE *file = fopen("signal.dat", "wb");
fwrite(signal, sizeof(double), numSamples, file);
fclose(file);
free(signal); // 释放信号数组
return ;
}
阅读全文