Lecture1 Petrov
Lecture1 Petrov
telecommunication networks;
C++ introduction
C++ introduction
Basics of C++ programming
Running C++ programs and examples
Main concepts
Useful materials and home work
Services R&D, simulators and test-beds, training and advisory and software
services. Main focus on telecommunication technologies
Technology Wireless communication technologies, incl. UMTS (3G), HSPA and HSPA+
competence (3.5/3.75G), LTE, LTE-A and WiMAX (3.9G/4G), Wi-Fi, cognitive networks,
DVB-RCS, DVB-S2, positioning systems (GPS)
R&D tool expertise System designing; simulator development (C/C++) and maintenance;
simulations; KPI analysis tool development (Perl, Matlab, C/C++); network
and device KPI analysis
Wireless
Reproducibility
Fidelity (especially, real-time constraints)
Radios may not exist or be available
Field tests in realistic conditions cost $$
Scenarios with desired parameters
Scalability
10,000+ nodes?
For smaller configurations, execution time
Test
Simulations
network
Commerci
alization
Explotation
NPTs: Simulators:
Focus on radio part: Representation of a real
propagation and system
interference models Both Radio and Core
Real maps planes (end2end)
Radio planning and Detailed realization of
optimization protocols and features
Some posses simulation Statistics for specific
possibilities: UE, eNB, link
Traffic modeling RB or even symbol
resolution on PHY
Packet tracing
Computational
Fast Middle Slow
Complexity
Interference study between RRM study excluding Mobility Study, RRM
USE Cases systems, etc. mobility, etc. Study, etc.
Link Level:
1 UE – 1eNB connection is simulated
1 subcarrier / 1 time slot resolution
Mainly physical layer procedures:
coding, modulation, complicated channel models, channel
estimation etc.
Provides input for system level simulations
Actual data transmission
System Level:
Hundreds of UEs - tens of eNBs
Resource Block (RB) resolution and more simple channel models
(pathloss + shadowing + fast fading)
Includes full protocol stack and many other procedures
TBER is defined by BLER-SINR curves form Link level
Simulation of received SINRs
100 m
UE was placed
randomly on the
circle and it takes a
random drive
direction towards
the pico
Springwald
ISD varies being about
500m in minimum and
about 1500m in maximum
Realism
Varying load per BS
Mobility problems,
coverage holes
UL / DL imbalance issues
Radio propagation
Empirical mathematical formulation for the characterization of
radio wave propagation as a function of frequency,
distance and other conditions
Slow fading
Shadow fading is caused by obstacles in the propagation path
between the UE and the eNodeB and can be interpreted as the
irregularities of the geographical characteristics of the terrain
introduced with respect to the average pathloss obtained from the
macroscopic pathloss model
Some part of the transmitted signal is lost through absorption,
reflection, scattering, and diffraction
Fast fading
Fast fading occurs if the channel impulse response changes rapidly
within the symbol duration
Fast fading occurs when the coherence time of the channel is
smaller than the symbol period of the transmitted signal
This causes frequency dispersion or time selective fading due to
Doppler spreading
Fast Fading is due to reflections of local objects and the motion of
the objects relative to those objects
organizations Nd
Dpc
Spectrum 1 Spectrum 2
5 MHz
45
35
30
25
20
15
10
0
0 5 10 15 20 25 30 35
Users per cell
Mesh node
Display
Computer Tap IF
Sensors
NS3 Simulator
Tap dev.
Edge
Gateway
Mesh + side load
Wire/Wired?
Display
RX/Play video
GUI
1
NEF-
library
GUI
Matlab
2
2. Easy integrate and take into use
Optimized C++ based NEF-library can be
GUI easily integrated with different simulators.
... Simulations can be visualized with QT
n
based NEF-Player in Windows and Linux
environments NEF Player
1. Savings in development and maintenance 3. Faster results analysis and development cycle
No need to develop or maintain separate graphical Efficient simulation visualization helps the analyze
user interfaces (GUI) or visualization tools for system / network performance for R&D and marketing
different simulators purposes for both technical and non-technical
audience
C++ program
Editor
Execution
int main()
{
cout << "My first C++ program." << endl;
return 0;
}
Simple Pointers
Structured
Integral: char, short, struct product {
int weight;
int, bool, long, unsigned… double price;
} ;
Floating point: float, double, …
product apple;
product banana, melon;
Enumeration: enum Color { RED, GREEN, BLUE }; apple.weight = 50;
Color r = RED; apple.price = 0.20;
int main ()
{
int a=5; // initial value: 5
int b(3); // initial value: 3
int c{2}; // initial value: 2 C++11
int result; // initial value undetermined
a = a + b;
result = a - c;
cout << result;
string mystring;
mystring = "This is the initial string content";
cout << mystring << endl;
return 0;
}
int main ()
{
for (int n=10; n>0; n--) {
if (n==5) continue;
cout << n << ", ";
}
cout << "liftoff!\n";
}
int main ()
{
int firstarray[] = {5, 10, 15};
int secondarray[] = {2, 4, 6, 8, 10};
printarray (firstarray,3);
printarray (secondarray,5);
return 1; Other examples:
} • char myword[] = { 'H', 'e', 'l', 'l', 'o', '\0' };
• char myword[] = "Hello";
• int jimmy [3][5]; // 2D array
• array<int,3> myarray {10,20,30}; //#include <array>
int main ()
{
int firstvalue = 5, secondvalue = 15;
int * p1, * p2;
circle = 2 * pi * r;
cout << circle;
cout << newline;
} Question:
int x;
int * const p_int = &x;
int main () {
Rectangle rect;
rect.set_values (3,4);
cout << "area: " << rect.area();
Pointers:
return 0; Rectangle obj (3, 4);
} Rectangle * foo, * bar;
foo = &obj;
bar = new Rectangle (5, 6);
cout << "*bar's area: " << bar->area() << '\n';
© 2015 Magister Solutions Ltd
#include <iostream>
Inheritance,
using namespace std;
class Polygon {
polymorphism
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b;}
};
int main () {
Rectangle rect;
Triangle trgl;
Polygon * ppoly1 = ▭
Polygon * ppoly2 = &trgl;
ppoly1->set_values (4,5);
ppoly2->set_values (4,5);
cout << rect.area() << '\n';
cout << trgl.area() << '\n';
return 0;
}
int main () {
mypair <int> myobject (100, 75);
cout << myobject.getmax();
return 0;
}
int main()
{
Base * pba = new Derived;
Base * pbb = new Base;
Derived * pd;
pd = dynamic_cast<Derived*>(pba);
if (pd==0) cout << "Null pointer on first type-cast.\n";
return 0;
}
int main ()
{
int m,n;
int (*minus)(int,int) = subtraction;
https://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html
Select appropriate names for all functions. All samples will have type double.
Assume there will be no NaNs or infinite samples. Use standard C++, you can
use STL if you want. No other library is permitted. Your code must compile with
GNU g++ 4.1.x or higher (you need at least 4.7.x if you use C++11).
Thanks to my colleagues:
Jani Puttonen, Petri Eskelinen, Anotoine Trux, Fedor
Chernogorov, Janne Kurjenniemi, Timo Hämäläinen
and others as well!
Dmitry Petrov,
[email protected]