mmCEsim 0.3.0
mmWave Channel Estimation Simulation
channel_graph.h
Go to the documentation of this file.
1
12#ifndef _EXPORT_CHANNEL_GRAPH_H_
13#define _EXPORT_CHANNEL_GRAPH_H_
14
15#include "log_global.h"
16#include "utils.h"
17#include <iostream>
18#include <string>
19#include <utility>
20#include <vector>
21
23 public:
33 bool addChannel(const std::string& id, const std::string& from, const std::string& to);
34
35 size_t nodeIndex(const std::string& id) const;
36
37 size_t channelIndex(const std::string& id) const;
38
45 size_t chFromIndex(const std::string& id) const;
46
53 size_t chToIndex(const std::string& id) const;
54
60 size_t pathsNum() const noexcept;
61
62 size_t maxPathLength() const;
63
64 bool arrange();
65
66 private:
72 void _formPaths(const std::vector<size_t>& path);
73
79 void _sortPaths();
80
87 void _validatePaths();
88
89 public:
90 static constexpr const size_t MAX_INDEX = -1;
91
92 std::vector<std::string> nodes;
93 std::vector<std::string> channels;
94 std::vector<size_t> from;
95 std::vector<size_t> to;
96 std::vector<size_t> Tx;
97 std::vector<size_t> Rx;
98 std::vector<std::vector<size_t>> paths;
99 std::vector<size_t> paths_num_acc;
100 std::vector<std::pair<size_t, size_t>> paths_indices;
101};
102
103inline size_t Channel_Graph::chFromIndex(const std::string& id) const { return from[channelIndex(id)]; }
104
105inline size_t Channel_Graph::chToIndex(const std::string& id) const { return to[channelIndex(id)]; }
106
107inline size_t Channel_Graph::pathsNum() const noexcept { return paths.size(); }
108
109inline size_t Channel_Graph::maxPathLength() const {
110 size_t max = 0;
111 for (const auto& path : paths) max = std::max(max, path.size());
112 return max;
113}
114
115#endif
Definition: channel_graph.h:22
std::vector< size_t > from
Definition: channel_graph.h:94
std::vector< size_t > Rx
Definition: channel_graph.h:97
bool addChannel(const std::string &id, const std::string &from, const std::string &to)
Add channel from configuration to the channel graph.
Definition: channel_graph.cpp:14
size_t channelIndex(const std::string &id) const
Definition: channel_graph.cpp:32
std::vector< std::string > nodes
Definition: channel_graph.h:92
std::vector< std::vector< size_t > > paths
Definition: channel_graph.h:98
void _sortPaths()
Sort paths.
Definition: channel_graph.cpp:93
std::vector< std::string > channels
Definition: channel_graph.h:93
size_t chToIndex(const std::string &id) const
Get the 'to' node index of channel.
Definition: channel_graph.h:105
size_t pathsNum() const noexcept
The number of paths in the channel graph.
Definition: channel_graph.h:107
size_t chFromIndex(const std::string &id) const
Get the 'from' node index of channel.
Definition: channel_graph.h:103
size_t maxPathLength() const
Definition: channel_graph.h:109
std::vector< size_t > paths_num_acc
Definition: channel_graph.h:99
static constexpr const size_t MAX_INDEX
Definition: channel_graph.h:90
size_t nodeIndex(const std::string &id) const
Definition: channel_graph.cpp:25
void _validatePaths()
Validate paths.
Definition: channel_graph.cpp:100
std::vector< std::pair< size_t, size_t > > paths_indices
Definition: channel_graph.h:100
bool arrange()
Definition: channel_graph.cpp:39
std::vector< size_t > Tx
Definition: channel_graph.h:96
std::vector< size_t > to
Definition: channel_graph.h:95
void _formPaths(const std::vector< size_t > &path)
Form paths based on the current frontier.
Definition: channel_graph.cpp:72
Global Access of Log.
Utilities.