Source code for piel.units.power

import numpy as np
from ..types import NumericalTypes


[docs] def dBm2watt(dBm: NumericalTypes) -> NumericalTypes: """ Converts power from dBm (decibel-milliwatts) to Watts. The conversion is performed using the following equation: .. math:: P_{\text{Watt}} = 10^{\left(\frac{P_{\text{dBm}}}{10}\right)} \times 10^{-3} Args: - dBm (NumericalTypes): Power level in dBm (can be int, float, or numpy array). Returns: - NumericalTypes: Power level in Watts, in the same type as the input. """ return 10 ** (dBm / 10) * 1e-3
[docs] def watt2dBm(watt: NumericalTypes) -> NumericalTypes: """ Converts power from Watts to dBm (decibel-milliwatts). The conversion is performed using the following equation: .. math:: P_{\text{dBm}} = 10 \times \log_{10}\left(\frac{P_{\text{Watt}}}{10^{-3}}\right) Args: - watt (NumericalTypes): Power level in Watts (can be int, float, or numpy array). Returns: - NumericalTypes: Power level in dBm, in the same type as the input. """ return 10 * np.log10(watt / 1e-3)
[docs] def watt2vrms(watt: NumericalTypes, impedance: NumericalTypes = 50.0) -> NumericalTypes: """ Converts power in Watts to Vrms (root mean square voltage) for a given impedance. The conversion is performed using the following equation: .. math:: V_{\text{rms}} = \sqrt{P_{\text{Watt}} \times Z} Args: - watt (NumericalTypes): Power level in Watts. - impedance (float): The network impedance in ohms. Defaults to 50.0 Ohms. Returns: - NumericalTypes: Vrms in the same type as the input. """ return np.sqrt(watt * impedance)
[docs] def dBm2vrms(dBm: NumericalTypes, impedance: NumericalTypes = 50.0) -> NumericalTypes: """ Converts power from dBm to Vrms (root mean square voltage) in a specified impedance network. The conversion is performed using the following steps: 1. Convert dBm to Watts: .. math:: P_{\text{Watt}} = 10^{\left(\frac{P_{\text{dBm}}}{10}\right)} \times 10^{-3} 2. Convert Watts to Vrms: .. math:: V_{\text{rms}} = \sqrt{P_{\text{Watt}} \times Z} Args: - dBm (NumericalTypes): Power level in dBm (can be int, float, or numpy array). - impedance (float): The network impedance in ohms. Default is 50 ohms. Returns: - NumericalTypes: Vrms value, in the same type as the input. """ power_watt = dBm2watt(dBm) return watt2vrms(power_watt, impedance)
[docs] def vrms2vpp(vrms: NumericalTypes) -> NumericalTypes: """ Converts Vrms (root mean square voltage) to Vpp (peak-to-peak voltage). The conversion is performed using the following equation: .. math:: V_{\text{pp}} = V_{\text{rms}} \times \sqrt{2} \times 2 Args: - vrms (NumericalTypes): Vrms value. Returns: - NumericalTypes: Vpp in the same type as the input. """ return vrms * np.sqrt(2) * 2
[docs] def vrms2watt(vrms: NumericalTypes, impedance: NumericalTypes = 50.0) -> NumericalTypes: """ Converts Vrms (root mean square voltage) to power in Watts for a given impedance. The conversion is performed using the following equation: .. math:: P_{\text{Watt}} = \frac{V_{\text{rms}}^2}{Z} Args: - vrms (NumericalTypes): Vrms value. - impedance (float): The network impedance in ohms. Returns: - NumericalTypes: Power level in Watts, in the same type as the input. """ return (vrms**2) / impedance
[docs] def vrms2dBm(vrms: NumericalTypes, impedance: NumericalTypes = 50.0) -> NumericalTypes: """ Converts Vrms (root mean square voltage) to dBm in a specified impedance network. The conversion is performed using the following steps: 1. Convert Vrms to Watts: .. math:: P_{\text{Watt}} = \frac{V_{\text{rms}}^2}{Z} 2. Convert Watts to dBm: .. math:: P_{\text{dBm}} = 10 \times \log_{10}\left(\frac{P_{\text{Watt}}}{10^{-3}}\right) Args: - vrms (NumericalTypes): Vrms value. - impedance (float): The network impedance in ohms. Default is 50 ohms. Returns: - NumericalTypes: Power level in dBm, in the same type as the input. """ power_watt = vrms2watt(vrms, impedance) return watt2dBm(power_watt)
[docs] def dBm2vpp(dBm: NumericalTypes, impedance: NumericalTypes = 50.0) -> NumericalTypes: """ Converts power from dBm to Vpp (peak-to-peak voltage) in a specified impedance network. The conversion is performed using the following steps: 1. Convert dBm to Watts: .. math:: P_{\text{Watt}} = 10^{\left(\frac{P_{\text{dBm}}}{10}\right)} \times 10^{-3} 2. Convert Watts to Vrms: .. math:: V_{\text{rms}} = \sqrt{P_{\text{Watt}} \times Z} 3. Convert Vrms to Vpp: .. math:: V_{\text{pp}} = V_{\text{rms}} \times \sqrt{2} \times 2 Args: - dBm (NumericalTypes): Power level in dBm (can be int, float, or numpy array). - impedance (float): The network impedance in ohms. Default is 50 ohms. Returns: - NumericalTypes: Vpp value, in the same type as the input. """ vrms_value = dBm2vrms(dBm, impedance) return vrms2vpp(vrms_value)
[docs] def vpp2vrms(vpp: NumericalTypes) -> NumericalTypes: """ Converts Vpp (peak-to-peak voltage) to Vrms (root mean square voltage). The conversion is performed using the following equation: .. math:: V_{\text{rms}} = \frac{V_{\text{pp}}}{\sqrt{2} \times 2} Args: - vpp (NumericalTypes): Vpp value. Returns: - NumericalTypes: Vrms value, in the same type as the input. """ return vpp / (np.sqrt(2) * 2)
[docs] def vpp2dBm(vpp: NumericalTypes, impedance: NumericalTypes = 50.0) -> NumericalTypes: """ Converts Vpp (peak-to-peak voltage) to dBm in a specified impedance network. The conversion is performed using the following steps: 1. Convert Vpp to Vrms: .. math:: V_{\text{rms}} = \frac{V_{\text{pp}}}{\sqrt{2} \times 2} 2. Convert Vrms to Watts: .. math:: P_{\text{Watt}} = \frac{V_{\text{rms}}^2}{Z} 3. Convert Watts to dBm: .. math:: P_{\text{dBm}} = 10 \times \log_{10}\left(\frac{P_{\text{Watt}}}{10^{-3}}\right) Args: - vpp (NumericalTypes): Vpp value. - impedance (float): The network impedance in ohms. Default is 50 ohms. Returns: - NumericalTypes: Power level in dBm, in the same type as the input. """ vrms_value = vpp2vrms(vpp) return vrms2dBm(vrms_value, impedance)