Catarc-Zhang 2023-02-18 12:50 采纳率: 50%
浏览 34
已结题

汽车角脉冲试验mat lab后处理

GBT6323中针对汽车频域特性的角脉冲试验那位有处理程序可以分享一下吗?

  • 写回答

1条回答 默认 最新

  • 答主 2023-02-19 10:39
    关注

    简单的示例程序

    #include <iostream>
    #include <fstream>
    #include <vector>
    #include <complex>
    #include <cmath>
    
    using namespace std;
    
    const double pi = 3.14159265358979323846;
    
    vector<complex<double>> fft(const vector<complex<double>> &x)
    {
        int n = x.size();
        if (n == 1) return vector<complex<double>> {x[0]};
        vector<complex<double>> x0, x1;
        for (int i = 0; i < n; i++)
            (i % 2 == 0 ? x0 : x1).push_back(x[i]);
        auto y0 = fft(x0), y1 = fft(x1);
        vector<complex<double>> y(n);
        for (int i = 0; i < n / 2; i++)
        {
            complex<double> t = polar(1.0, -2 * pi * i / n) * y1[i];
            y[i] = y0[i] + t;
            y[i + n / 2] = y0[i] - t;
        }
        return y;
    }
    
    vector<double> conv(const vector<double> &x, const vector<double> &y)
    {
        int n = x.size(), m = y.size();
        vector<complex<double>> a(n), b(m);
        for (int i = 0; i < n; i++) a[i] = complex<double>(x[i], 0);
        for (int i = 0; i < m; i++) b[i] = complex<double>(y[i], 0);
        int k = 1;
        while (k < n + m) k *= 2;
        a.resize(k), b.resize(k);
        auto c = fft(a), d = fft(b);
        for (int i = 0; i < k; i++) c[i] *= d[i];
        auto e = fft(c);
        vector<double> z(n + m - 1);
        for (int i = 0; i < n + m - 1; i++) z[i] = e[i].real() / k;
        return z;
    }
    
    int main()
    {
        ifstream fin("input.txt");
        ofstream fout("output.txt");
    
        int n, m;
        fin >> n >> m;
    
        vector<double> x(n), y(m);
        for (int i = 0; i < n; i++) fin >> x[i];
        for (int i = 0; i < m; i++) fin >> y[i];
    
        auto z = conv(x, y);
    
        for (int i = 0; i < z.size(); i++) fout << z[i] << endl;
    
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 创建了问题 2月18日

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂