示例#1
0
def main():
    file = sys.argv[1]
    mdf_file = MDF(file)
    mdf_file = mdf_file.filter([
        'can0_LWI_Lenkradwinkel', 'can0_LWI_Lenkradw_Geschw',
        'can0_ESP_Fahrer_bremst', 'can0_ESP_Bremsdruck',
        'can0_MO_Fahrpedalrohwert_01', 'can0_MO_Kuppl_schalter',
        'can0_MO_Drehzahl_01', 'can0_MO_Gangposition', 'can0_ESP_v_Signal',
        'can0_ESP_HL_Fahrtrichtung', 'can0_ESP_HR_Fahrtrichtung',
        'can0_ESP_Laengsbeschl', 'can0_ESP_Gierrate'
    ])
    signals = mdf_file.iter_channels(skip_master=True)
    sf = dict()
    for signal in signals:
        f = len(
            signal.timestamps) / (signal.timestamps[-1] - signal.timestamps[0])
        sf[signal.name[5:]] = f

    values = list(map(lambda x: int(math.ceil(x) / 10) * 10, sf.values()))
    signal_names = list(map(lambda x: '_'.join(x.split('_')[1:]), sf.keys()))
    fig, ax = plt.subplots(figsize=[8, 4])
    plt.bar(range(len(sf)), values, align='center')
    plt.yticks(np.arange(0, max(values) + 10, 10))
    plt.ylabel('Frequency [Hz]')
    plt.xticks(range(len(sf)), signal_names, rotation='vertical')
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.grid(color='gray', linestyle='-', linewidth=0.25, alpha=0.5)

    plt.savefig('../Thesis/images/signal_frequences.png', bbox_inches='tight')
示例#2
0
    def test_resample(self):
        raster = 1.33
        sigs = [
            Signal(
                samples=np.arange(1000, dtype='f8'),
                timestamps=np.concatenate(
                    [np.arange(500), np.arange(1000, 1500)]),
                name=f'Signal_{i}',
            ) for i in range(20)
        ]

        mdf = MDF()
        mdf.append(sigs)
        mdf = mdf.resample(raster=raster)

        target_timestamps = np.arange(0, 1500, 1.33)
        target_samples = np.concatenate([
            np.arange(0, 500, 1.33),
            np.linspace(499.00215568862274, 499.9976646706587, 376),
            np.arange(500.1600000000001, 1000, 1.33)
        ])

        for i, sig in enumerate(mdf.iter_channels(skip_master=True)):
            self.assertTrue(np.array_equal(sig.timestamps, target_timestamps))
            self.assertTrue(np.allclose(sig.samples, target_samples))
示例#3
0
    def test_resample_raster_0(self):
        sigs = [
            Signal(
                samples=np.ones(1000) * i,
                timestamps=np.arange(1000),
                name=f'Signal_{i}',
            ) for i in range(20)
        ]

        mdf = MDF()
        mdf.append(sigs)
        mdf.configure(read_fragment_size=1)
        mdf = mdf.resample(raster=0)

        for i, sig in enumerate(mdf.iter_channels(skip_master=True)):
            self.assertTrue(np.array_equal(sig.samples, sigs[i].samples))
            self.assertTrue(np.array_equal(sig.timestamps, sigs[i].timestamps))
示例#4
0
def signal_frequences(input_path):
    print('=====Signal frequences=====')
    file = os.listdir(input_path)[0]
    mdf_file = MDF(os.path.join(input_path, file))
    # mdf_file = mdf_file.filter(['can0_LWI_Lenkradwinkel', 'can0_LWI_VZ_Lenkradwinkel', 'can0_ESP_Fahrer_bremst', 'can0_ESP_Bremsdruck', 'can0_MO_Fahrpedalrohwert_01', 'can0_MO_Kuppl_schalter', 'can0_MO_Drehzahl_01', 'can0_MO_Gangposition', 'can0_ESP_v_Signal', 'can0_ESP_HL_Fahrtrichtung', 'can0_ESP_HR_Fahrtrichtung'])
    signals = mdf_file.iter_channels(skip_master=True)
    sf = dict()
    count = 0
    for signal in signals:
        f = len(
            signal.timestamps) / (signal.timestamps[-1] - signal.timestamps[0])
        sf[signal.name[5:]] = f
        print('%s: %.2f Hz' % (signal.name, f))
        count += len(signal.timestamps)

    # print('Count: %d' % count)
    plt.figure(4)
    plt.bar(range(len(sf)), list(sf.values()), align='center')
    plt.yticks(np.arange(0, max(sf.values()), 10))
    plt.ylabel('Frequency [Hz]')
    plt.xticks(range(len(sf)), list(sf.keys()), rotation='vertical')