打印

国产的GPT性能大大提升了,赶紧注册试用

[复制链接]
1210|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
国内做GPT做的最好的是科大讯飞,之前的版本跟傻子一样,最近又使用,发现提升了不少,基本上接近了chatGPT,大家可以注册试用。网页版如下,只需要通过手机验证码即可注册登录使用。

https://xinghuo.xfyun.cn/

下面跟大家看看效果

#include <complex.h>
#include <math.h>
#include <stdio.h>

#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif

void fft(complex double *a, int n) {
    if (n <= 1) return;

    complex double a0[n / 2], a1[n / 2];
    for (int i = 0; i < n / 2; i++) {
        a0[i] = a[i * 2];
        a1[i] = a[i * 2 + 1];
    }

    fft(a0, n / 2);
    fft(a1, n / 2);

    for (int i = 0; i < n / 2; i++) {
        complex double t = cexp(-2.0 * I * M_PI * i / n) * a1[i];
        a[i] = a0[i] + t;
        a[i + n / 2] = a0[i] - t;
    }
}

int main() {
    int n = 8;
    complex double a[] = {1, 1, 1, 1, 0, 0, 0, 0};

    fft(a, n);

    for (int i = 0; i < n; i++) {
        printf("%f%+fi
", creal(a[i]), cimag(a[i]));
    }

    return 0;
}
这个程序实现了一个递归的FFT算法,输入数组a的长度为n,输出数组a包含n个复数,表示原始信号的频域表示。注意,这个实现假设输入数组的长度是2的整数次幂。如果需要处理其他长度的数组,可以在调用fft函数之前对数组进行填充。

(内容由讯飞星火AI生成)


继续提问


继续提问:如果使用Arduino来实现FFT,该如何编写代码?
讯飞星火:
使用Arduino实现FFT需要对C语言和数字信号处理有一定的了解。以下是一个简化的Arduino FFT实现示例:
#include <complex.h>
#include <math.h>

#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif

void fft(complex double *a, int n) {
    if (n <= 1) return;

    complex double a0[n / 2], a1[n / 2];
    for (int i = 0; i < n / 2; i++) {
        a0[i] = a[i * 2];
        a1[i] = a[i * 2 + 1];
    }

    fft(a0, n / 2);
    fft(a1, n / 2);

    for (int i = 0; i < n / 2; i++) {
        complex double t = cexp(-2.0 * I * M_PI * i / n) * a1[i];
        a[i] = a0[i] + t;
        a[i + n / 2] = a0[i] - t;
    }
}

void setup() {
    complex double a[] = {1, 1, 1, 1, 0, 0, 0, 0};
    int n = sizeof(a) / sizeof(a[0]);

    fft(a, n);

    for (int i = 0; i < n; i++) {
        Serial.print(creal(a[i]));
        Serial.print(" + ");
        Serial.print(cimag(a[i]));
        Serial.println("i");
    }
}

void loop() {
}
这个程序实现了一个递归的FFT算法,输入数组a的长度为n,输出数组a包含n个复数,表示原始信号的频域表示。注意,这个实现假设输入数组的长度是2的整数次幂。如果需要处理其他长度的数组,可以在调用fft函数之前对数组进行填充。

这个实现中,我们使用了C语言中的复数类型complex double来表示复数,其中实部和虚部都是浮点数。我们还使用了cexp函数来计算复数的指数,以及creal和cimag函数来提取复数的实部和虚部。

在setup函数中,我们初始化了一个长度为8的复数数组a,并调用fft函数计算其DFT。然后,我们将结果输出到串口。

在loop函数中,我们没有执行任何操作,因为FFT计算只需要在程序开始时执行一次。如果你需要在循环中不断更新FFT结果,可以将FFT计算部分的代码移动到loop函数中,并在每次循环时重新计算FFT。

(内容由讯飞星火AI生成)


大家觉得这个GPT工具如何呢?想不想赶紧试用一下。

使用特权

评论回复

相关帖子

沙发
HeTui| | 2024-8-22 16:51 | 只看该作者
赶紧注册尝试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1958

主题

15904

帖子

207

粉丝