A system comprising: a dual rotor electrical machine including, a stator, an inner rotor including a first number of permanent magnet pole pairs (370a, 370b), and a modulator including a second number of modulating segments, wherein the stator, inner rotor and modulator are coaxially arranged, the system further comprising: a controller configured to execute non-transitory machine-readable instructions that, when executed by the controller, cause the system to determine a virtual position of an electromagnetic field of the stator based on a weighted sum of an angular position of the inner rotor and an angular position of the modulator, wherein weights in the weighted sum are based on the first number and the second number, a first position resolver, the first position resolver configured to obtain the angular position of the inner rotor, and configured to provide the angular position to the controller, and a second position resolver, the second position resolver configured to obtain the angular position of the modulator, and configured to provide the angular position of the modulator to the controller, the system is characterised in that the controller is configured to execute machine readable instructions to determine the virtual position as (n3 - n1) * Theta_Stator = - n1 * Theta_Rotor + n3 * Theta_Modulator + (n3 - n1) * Theta_Modulator + (n3 - n1) * C_3, where Theta_Stator is the virtual position, Theta_Rotor is the angular position of the inner rotor, Theta_Modulator is the angular position of the modulator, n1 is the first number of permanent magnet pole pairs (370a, 370b), n3 is the second number of modulating segments, and C_3 is a position offset. a dual rotor electrical machine including, a stator, an inner rotor including a first number of permanent magnet pole pairs (370a, 370b), and a modulator including a second number of modulating segments, wherein the stator, inner rotor and modulator are coaxially arranged, the system further comprising: a controller configured to execute non-transitory machine-readable instructions that, when executed by the controller, cause the system to determine a virtual position of an electromagnetic field of the stator based on a weighted sum of an angular position of the inner rotor and an angular position of the modulator, wherein weights in the weighted sum are based on the first number and the second number, a first position resolver, the first position resolver configured to obtain the angular position of the inner rotor, and configured to provide the angular position to the controller, and a second position resolver, the second position resolver configured to obtain the angular position of the modulator, and configured to provide the angular position of the modulator to the controller, the system is characterised in that the controller is configured to execute machine readable instructions to determine the virtual position as (n3 - n1) * Theta_Stator = - n1 * Theta_Rotor + n3 * Theta_Modulator + (n3 - n1) * Theta_Modulator + (n3 - n1) * C_3, where Theta_Stator is the virtual position, Theta_Rotor is the angular position of the inner rotor, Theta_Modulator is the angular position of the modulator, n1 is the first number of permanent magnet pole pairs (370a, 370b), n3 is the second number of modulating segments, and C_3 is a position offset. a controller configured to execute non-transitory machine-readable instructions that, when executed by the controller, cause the system to determine a virtual position of an electromagnetic field of the stator based on a weighted sum of an angular position of the inner rotor and an angular position of the modulator, wherein weights in the weighted sum are based on the first number and the second number, a first position resolver, the first position resolver configured to obtain the angular position of the inner rotor, and configured to provide the angular position to the controller, and a second position resolver, the second position resolver configured to obtain the angular position of the modulator, and configured to provide the angular position of the modulator to the controller, the system is characterised in that the controller is configured to execute machine readable instructions to determine the virtual position as (n3 - n1) * Theta_Stator = - n1 * Theta_Rotor + n3 * Theta_Modulator + (n3 - n1) * Theta_Modulator + (n3 - n1) * C_3, where Theta_Stator is the virtual position, Theta_Rotor is the angular position of the inner rotor, Theta_Modulator is the angular position of the modulator, n1 is the first number of permanent magnet pole pairs (370a, 370b), n3 is the second number of modulating segments, and C_3 is a position offset.