广告招募

当前位置:全球贸易网 > 技术中心 > 所有分类

捷浦智能多轴运动控制器 实现抑振控制简单示例

2025年09月24日 09:11:33      来源:捷浦智能(深圳)有限公司 >> 进入该公司展台      阅读量:5

分享:

```cpp

#Include

#Include

#Include


// 计算离散傅里叶变换(DFT)

std::vector dft(const std::vector& signal) {

    int N = signal.size();

    std::vector result(N);

    for (int k = 0; k < N; ++k) {

        double sum = 0;

        for (int n = 0; n < N; ++n) {

            double angle = -2 * M_PI * k * n / N;

            sum += signal[n] * std::cos(angle);

        }

        result[k] = sum;

    }

    return result;

}


// 通过预滤波器去除共振荡频率

std::vector remove_coherent_noise(const std::vector& signal, double threshold) {

    std::vector dft_result = dft(signal);

    int N = signal.size();

    for (int i = 1; i < N / 2; ++i) {

        if (std::abs(dft_result[i]) > threshold) {

            dft_result[i] = 0;

        }

    }

    std::vector filtered_signal(N);

    for (int n = 0; n < N; ++n) {

        double sum = 0;

        for (int k = 0; k < N; ++k) {

            double angle = 2 * M_PI * k * n / N;

            sum += dft_result[k] * std::cos(angle);

        }

        filtered_signal[n] = sum;

    }

    return filtered_signal;

}


int main() {

    std::vector signal = {1, 2, 3, 4, 5, 6, 7, 8};

    double threshold = 10;

    std::vector filtered_signal = remove_coherent_noise(signal, threshold);

    for (double value : filtered_signal) {

        std::cout << value << " ";

    }

    std::cout << std::endl;

    return 0;

版权与免责声明:
1.凡本网注明"来源:全球贸易网"的所有作品,版权均属于全球贸易网,转载请必须注明全球贸易网。违反者本网将追究相关法律责任。
2.企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
3.本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。 4.如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系。