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')
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))
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))
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')