Ctilde

class pylayers.antprop.channel.Ctilde[source]

Bases: pylayers.util.project.PyLayers

container for the 4 components of the polarimetric ray channel

Ctt : bsignal.FUsignal Ctp : bsignal.FUsignal Cpt : bsignal.FUsignal Cpp : bsignal.FUsignal

tauk : ndarray delays tang : ndarray angles of departure rang : ndarray angles of arrival tangl : ndarray angles of departure (local) rangl : ndarray angles of arrival (local)

fGHznp.array

frequency array

nfreqint

number of frequency point

nrayint

number of rays

choose load mobility doadod show energy sort prop2tran

Methods Summary

Cg2Cl([Tt, Tr])

global reference frame to local reference frame

check_reciprocity(C)

check channel reciprocity

cut([threshold_dB])

cut rays from a energy threshold

doadod(**kwargs)

doadod scatter plot

energy([mode, Friis, sumray])

calculates energy on each channel

inforay(iray[, ifreq])

provide information about a specific ray

loadh5(Lfilename, idx[, output])

load Ctilde object in hdf5 format

locbas(**kwargs)

global reference frame to local reference frame

los(**kwargs)

Line of site channel

mobility(v, dt)

modify channel for uniform mobility

plotd([d])

plot direction of arrival/departure

prop2tran([a, b, Friis, debug])

transform propagation channel into transmission channel

saveh5(Lfilename, idx, a, b)

save Ctilde object in hdf5 format

show(**kwargs)

show the propagation channel

sort([typ])

sort Ctilde with respect to typ (default tauk)

Methods Documentation

Cg2Cl(Tt=[], Tr=[])[source]

global reference frame to local reference frame

If Tt and Tr are [] the global channel is retrieved

TtTx rotation matrix 3x3

default []

TrRx rotation matrix 3x3

default []

Cl : Ctilde local

check_reciprocity(C)[source]

check channel reciprocity

C : Ctilde

This is not properly implemented

cut(threshold_dB=50)[source]

cut rays from a energy threshold

thresholdfloat

default 0.99

doadod(**kwargs)[source]

doadod scatter plot

phituple (-180, 180)

phi angle

normalizebool

energy normalized

reversebool

inverse theta and phi representation

polarbool

polar representation

cmap : matplotlib.cmap mode : string

‘center’ | ‘mean’ | ‘in’

sfloat

scatter dot size

fontsize : float edgecolors : bool colorbar : bool xa : xb :

scatter plot of the DoA-DoD channel structure the energy is color coded over all couples of DoA-DoD

>>> from pylayers.antprop.channel import *

pylayers.signal.bsignal.energy

energy(mode='mean', Friis=True, sumray=False)[source]

calculates energy on each channel

modestring

‘mean’

Friis: boolean

True

sumray: boolean

False

ECtt : Energy on co channel tt ECpp : Energy on co channel pp ECtp : Energy on co channel tp ECpt : Energy on co channel pt

pylayers.signal.bsignal.FUsignal.energy

r x f+

axis 0 : ray axis 1 : frequency

inforay(iray, ifreq=0)[source]

provide information about a specific ray

loadh5(Lfilename, idx, output=True)[source]

load Ctilde object in hdf5 format

Lfilenamestring

Layout filename

idxint

file identifier number

outputbool

return an output precised in return

if output: (Layout filename , Tx position, Rx position)

locbas(**kwargs)[source]

global reference frame to local reference frame

If Tt and Tr are [] the global channel is retrieved

Tarotation matrix 3x3 side a

default []

Tbrotation matrix 3x3 side b

default []

This method affects the boolean islocal This method update the ray propagation channel in either local or global frame self.Ta and self.Tb are updated with input parameters Ta an Tb

Cray propagation channel (2x2xrxf) complex

either local or global depends on self.islocal boolean value

>>> C = Ctilde()
>>> Ta = MEulerAngle(np.pi/2,np.pi/2,np.pi/2.)
>>> Tb = MEulerAngle(np.pi/3,np.pi/3,np.pi/3.)
>>> C.locbas(Ta=Ta,Tb=Tb)
los(**kwargs)[source]

Line of site channel

d(m) fGHz (,Nf) tang (1x2) rang (1x2)

mobility(v, dt)[source]

modify channel for uniform mobility

vfloat

velocity (m/s)

dtfloat

delta t (s)

Calculate a channel field from Ctilde and v(terminal vitese) and dt(time of deplacement)

dt en s (observation time between 2 Rx position) v en m/s (vitesse de changement de Rx)

tau : modified Ctilde

plotd(d='doa', **kwargs)[source]

plot direction of arrival/departure

d: string

‘doa’ | ‘dod’ display direction of departure | arrival

fig : plt.figure ax : plt.axis phi: tuple (-180, 180)

phi angle

normalize: bool

energy normalized

reversebool

inverse theta and phi represenation

polarbool

polar representation

cmap: matplotlib.cmap mode: ‘center’ | ‘mean’ | ‘in’

see bsignal.energy

sfloat

scatter dot size

fontsize: float edgecolors: bool colorbar: bool title : bool

prop2tran(a=[], b=[], Friis=True, debug=False)[source]

transform propagation channel into transmission channel

a : antenna or array a b : antenna or array b

Tanp.array(3x3)

unitary matrice for antenna orientation

Tbnp.array(3x3)

unitary matrice for antenna orientation

Friisboolean

if True scale with \(-j\frac{\lambda}{f}\)

debugboolean

if True the antenna gain for each ray is stored

H : Tchannel(bs.FUsignal)

saveh5(Lfilename, idx, a, b)[source]

save Ctilde object in hdf5 format

Lfilenamestring

Layout filename

idxint

file identifier number

anp.ndarray

postion of point a (transmitter)

bnp.ndarray

postion of point b (receiver)

show(**kwargs)[source]

show the propagation channel

typ : ‘m’, ‘l20’ , ‘r’ cmap : colormap

default hot

fontsizeint

default 14

sort(typ='tauk')[source]

sort Ctilde with respect to typ (default tauk)

typstring
sort w.r.t

‘tauk’ : delay (default) ‘att’ : theta Tx ‘atp’ : phi Tx ‘art’ : theta Rx ‘arp’ : phi Rx ‘energy’ : energy