diff --git a/dataprocessing/readtools.py b/dataprocessing/readtools.py
index 6944c6ef5f433d639c48dc9837585bda5a712b94..2bbc92f7ea3b2eb14b7a27f08104862e094afc4b 100644
--- a/dataprocessing/readtools.py
+++ b/dataprocessing/readtools.py
@@ -56,20 +56,47 @@ def read_timeseries_PLECS(filename, timeseries_names=None):
 
 def read_timeseries_simulink(filename, timeseries_names=None):
     pd_df = pd.read_csv(filename)
-    timeseries_list = []
+    timeseries_list = {}
+    cmpl_result_columns = []
+    real_result_columns = []
+
     if timeseries_names is None:
-        # No trajectory names specified, thus read in all
-        timeseries_names = list(pd_df.columns.values)
-        timeseries_names.remove('time')
-        for name in timeseries_names:
-            timeseries_list.append(TimeSeries(name, pd_df['time'].values, pd_df[name].values))
+        # No column names specified, thus read in all and strip off spaces
+        pd_df.rename(columns=lambda x: x.strip(), inplace=True)
+        column_names = list(pd_df.columns.values)
+
+        # Remove timestamps column name and store separately
+        column_names.remove('time')
+        timestamps = pd_df.iloc[:, 0]
+
+        # Find real and complex variable names
+        real_string = '.real'
+        imaginary_string = '.imag'
+        for column in column_names:
+            if real_string in column:
+                tmp = column.replace(real_string, '')
+                cmpl_result_columns.append(tmp)
+                #print("Found complex variable: " + tmp)
+            elif not imaginary_string in column:
+                real_result_columns.append(column)
+                #print("Found real variable: " + column)       
+        
+        for column in real_result_columns:                
+            timeseries_list[column] = TimeSeries(column, timestamps, pd_df[column])
+
+        for column in cmpl_result_columns:                
+            timeseries_list[column] = TimeSeries(column, timestamps, 
+                np.vectorize(complex)(pd_df[column + real_string], 
+                pd_df[column + imaginary_string]))
+           
     else:
         # Read in specified time series
-        for name in timeseries_names:
-            timeseries_list.append(TimeSeries(name, pd_df['time'].values, pd_df[name].values))
+        print('cannot read specified columns yet')
 
-    print('Simulink results column names: ' + str(timeseries_names))
-    print('Simulink results number: ' + str(len(timeseries_list)))
+    print('Simulink results real column names: ' + str(real_result_columns))
+    print('Simulink results complex column names: ' + str(cmpl_result_columns))
+    print('Simulink results variable number: ' + str(len(timeseries_list)))
+    print('Simulink results length: ' + str(len(timestamps)))
 
     return timeseries_list
 
@@ -95,8 +122,8 @@ def read_timeseries_dpsim(filename, timeseries_names=None):
         timestamps = pd_df.iloc[:, 0]
 
         # Find real and complex variable names
-        real_string = '_re'
-        imaginary_string = '_im'
+        real_string = '.real'
+        imaginary_string = '.imag'
         for column in column_names:
             if real_string in column:
                 tmp = column.replace(real_string, '')