Indoor Office¶
![Inheritance diagram of hermespy.channel.cdl.indoor_office.IndoorOffice, hermespy.channel.cdl.indoor_office.IndoorOfficeRealization](../../../_images/inheritance-9b72cfe79fa9b8f619cbcae6b809baaef94e561a.png)
Implementation of an indoor office communication channel model. Refer to the Study on channel model for frequencies from 0.5 to 100 GHz[1] for detailed information.
The following minimal example outlines how to configure the channel model
within the context of a Simulation
:
1# Initialize two devices to be linked by a channel
2simulation = Simulation()
3alpha_device = simulation.new_device(
4 carrier_frequency=1e8, pose=Transformation.From_Translation(np.array([0., 0., 2.])))
5beta_device = simulation.new_device(
6 carrier_frequency=1e8, pose=Transformation.From_Translation(np.array([40., 40., 2.])))
7
8# Create a channel between the two devices
9channel = IndoorOffice(office_type=OfficeType.OPEN, seed=42)
10simulation.set_channel(alpha_device, beta_device, channel)
11
12# Configure communication link between the two devices
13link = SimplexLink(alpha_device, beta_device)
14
15# Specify the waveform and postprocessing to be used by the link
16link.waveform = RRCWaveform(
17 symbol_rate=1e8, oversampling_factor=2, num_data_symbols=1000,
18 num_preamble_symbols=10, pilot_rate=10)
19link.waveform.channel_estimation = SCLeastSquaresChannelEstimation()
20link.waveform.channel_equalization = SCZeroForcingChannelEqualization()
21
22# Configure a simulation to evaluate the link's BER and sweep over the receive SNR
23simulation.add_evaluator(BitErrorEvaluator(link, link))
24simulation.new_dimension('noise_level', dB(0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20), beta_device)
25
26# Run simulation and plot resulting SNR curve
27result = simulation.run()
28result.plot()
29plt.show()
- class IndoorOffice(office_type=OfficeType.MIXED, **kwargs)[source]¶
Bases:
ClusterDelayLineBase
[IndoorOfficeRealization
,LOSState
],Serializable
3GPP cluster delay line preset modeling an indoor office scenario.
- Parameters:
office_type (OfficeType, optional) – Type of the modeled office. If not specified, a mixed office is assumed.
**kwargs – Additional arguments passed to the base class.
- property office_type: OfficeType¶
Type of the modeled office.
- yaml_tag: Optional[str] = 'IndoorOffice'¶
YAML serialization tag.
- class IndoorOfficeRealization(expected_state, state_realization, los_realization, nlos_realization, parameters, office_type, sample_hooks, gain=1.0)[source]¶
Bases:
ClusterDelayLineRealization
[LOSState
]Realization of an indoor office cluster delay line model.
- Parameters:
expected_state (O2IState | None) – Expected large-scale state of the channel. If not specified, the large-scale state is randomly generated.
state_realization (ConsistentRealization) – Realization of a spatially consistent random number generator for the large-scale state.
los_realization (ConsistentRealization) – Realization of a spatially consistent random number generator for small-scale parameters in the LOS state.
nlos_realization (ConsistentRealization) – Realization of a spatially consistent random number generator for small-scale parameters in the NLOS state.
parameters (ClusterDelayLineRealizationParameters) – General parameters of the cluster delay line realization.
office_type (OfficeType) – Type of the modeled office.
sample_hooks (Set[ChannelSampleHook[ClusterDelayLineSample]]) – Hooks to be called when a channel sample is generated.
gain (float, optional) – Linear amplitude scaling factor if signals propagated over the channel.
- class OfficeType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]¶
Bases:
Enum
Type of office.
- MIXED = 0¶
Mixed office
- OPEN = 1¶
Open office