## 5 Feasibility Study Through System Simulations
### Generation of Datasets of Fingerprints
#### 5.2.4 Generation of Moving Tiles
Two function calls to \(FMovingTiles()\) are performed, one to generate the MTV dataset and one to generate the MTT dataset (as will be explained in steps 6 and 7 of the main execution flow of the simulator presented in Section 5.6.1). Figure 13 depicts an example of the output produced by this function for 40 moving tiles (colored tiles). In the figure, the positioning area for this example is the grid that spans from position 1 m to 14 m along the \(x\) coordinates and from position 1 m to 6 m along the \(y\) coordinates. This positioning area is analogous to the one depicted in Figure 12 for fixed tiles. The grid is provided as a reference to observe the relative position of the moving tiles to the actual position of the fixed tiles. Each sub-tile of the moving tiles has a vector of fingerprint elements from the four base stations associated with it. In the figure, each sub-tile is color-coded with the RGB and opacity channels to represent the fingerprints from each one of the four base stations. In this example, \(N_{SS}=10\), and \(S_{S}=50\) mm. #### 5.2.5 Generation of Individual Tiles

The functions \(FFixedTiles()\) and \(FMovingTiles()\) create fixed and moving tiles, respectively. The difference between these functions is the following. The function \(FFixedTiles()\) creates tiles at every position determined by the imaginary grid created in the function \(FTileCenters()\). The function \(FMovingTiles()\) creates tiles at random positions. Regardless of the position of the tile, the structure of the tile remains the same for a given tile arrangement (that is, in terms of the number of sub-tiles in the tile and the sub-tile sizes,

Figure 13: Example of 40 moving tiles (colored tiles) with \(N_{SS}=10\) and \(S_{S}=50\) mm generated by samples obtained from a uniform distribution in the function \(FMovingTiles()\). The grid covering the positioning area is provided as a reference to observe the relative position of the moving tiles to the actual position of the fixed tiles. as introduced in Section 5.9). The way to create the tile is common to both functions, \(FFixedTiles()\) and \(FMovingTiles()\). Therefore, to avoid redundant lines of pseudocode in these functions, the actual tile is created using a function \(FTile()\), which is called by these functions. The functions \(FFixedTiles()\) and \(FMovingTiles()\) call the function \(FTile()\) to generate a tensor, representing a tile, in which each sub-tile has an associated vector of four fingerprints, with one from each base station. The function \(FTile()\), shown in Pseudocode 4, takes as its input the desired coordinates of the tile \(iX\) and \(iY\) and the parameters related to the sub-tiles, \(N_{SS}\) and \(S_{S}\). The pseudocode generates a grid of sub-tiles, shifted by the coordinates \(iX\) and \(iY\), and determines the distance \(d\) from each sub-tile to each base station. For each sub-tile and base station combination, the path loss is calculated as function of \(d\). Then, the shadow fading is generated from a zero mean normal distribution and added to the path loss to form a radio channel realization, to be used as a fingerprint, as explained in Section 5.4. A data structure \(TileDataStructure\) is used to store the vectors of fingerprints for each sub-tile. We refer to it as a tensor, although any other suitable data structure could be used. A data structure \(SubTilesCenterPositStruct\) is used to store the position coordinates for each sub-tile in the tile. The function returns as its output \(TileDataStructure\) and \(SubTilesCenterPositStruct\).