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

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

简单的示例程序

#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;
}