编写一个2fsk解调的c代码
时间: 2024-05-08 21:15:02 浏览: 10
以下是一个简单的2FSK解调C代码示例:
```c
#include <stdio.h>
#include <math.h>
#define SAMPLE_RATE 44100 // 采样率
#define FREQ1 1000 // 第一个频率
#define FREQ2 2000 // 第二个频率
int main() {
int n = 0;
double t = 0;
double sample = 0;
double prev_sample = 0;
double delta_phase = 0;
double phase = 0;
double freq = FREQ1;
double prev_freq = FREQ1;
double bit_duration = 1.0 / (2.0 * (double)FREQ1); // 一个比特的持续时间
while(1) {
// 读取采样
scanf("%lf", &sample);
// 计算频率和相位的变化量
delta_phase = 2 * M_PI * freq / SAMPLE_RATE;
// 更新相位
phase += delta_phase;
// 判断是否需要切换频率
if (t >= bit_duration) {
t -= bit_duration;
freq = (prev_freq == FREQ1) ? FREQ2 : FREQ1;
bit_duration = 1.0 / (2.0 * (double)freq);
prev_freq = freq;
}
// 判断信号是否变化
if ((sample > 0 && prev_sample <= 0) || (sample < 0 && prev_sample >= 0)) {
// 相位反向
phase -= M_PI;
}
// 输出比特值
if (phase >= M_PI) {
printf("1 ");
phase -= M_PI;
} else {
printf("0 ");
}
// 更新时间和前一个采样值
prev_sample = sample;
t += 1.0 / SAMPLE_RATE;
// 处理完一个比特后暂停
if (t >= bit_duration) {
t = 0;
}
}
return 0;
}
```
这段代码假设输入的是一个数字类型的采样值序列,每个采样值表示时域上的信号强度。代码通过计算相位的变化量来模拟不同频率的信号,并判断是否需要切换频率。在采样值发生变化时,代码计算相位是否需要反向。最终输出解调后的比特值序列。
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_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)