Professional Documents
Culture Documents
Ph lc 2
Rnd1 = CLng((Upper - Lower + 1) * Rnd + Lower)
Exit Function
LocalError:
Rnd1 = 1
End Function
Private Function log10(x As Double) As Double
log10 = Log(x) / Log(10)
End Function
*********************************************************
Private Function getSub(x As String) As String
Dim Index
Index = InStr(x, ".")
getSub = Left(x, Index + 4)
End Function
*******************************************************
Private Function dBtodBm(x As Double) As Double
dBtodBm = 10 * Log(Exp((x / 10) * Log(10)) * 1000) / Log(10)
End Function
***************************************************
Private Sub Tinh()
Dim n1 As Integer
* * ****************************************
'Bang ERLANG B chon GoS = 0.05
ERL(0) = 0.053
ERL(6) = 3.738
ERL(12) = 8.835
ERL(1) = 0.381
ERL(7) = 4.543
ERL(13) = 9.73
ERL(2) = 0.899
ERL(8) = 5.37
ERL(14) = 10.633
ERL(3) = 1.525
ERL(9) = 6.216
ERL(15) = 11.544
ERL(4) = 2.218
ERL(10) = 7.076
ERL(16) = 12.461
ERL(5) = 2.96
ERL(11) = 7.95
ERL(17) = 13.385
76
Ph lc 2
ERL(18) = 14.315
ERL(46) = 41.54
ERL(74) = 69.38
ERL(19) = 15.249
ERL(47) = 42.537
ERL(75) = 70.753
ERL(20) = 16.189
ERL(48) = 43.534
ERL(76) = 71.769
ERL(21) = 17.132
ERL(49) = 44.533
ERL(77) = 72.786
ERL(22) = 18.08
ERL(50) = 45.533
ERL(78) = 73.803
ERL(23) = 19.031
ERL(51) = 46.533
ERL(79) = 74.82
ERL(24) = 19.985
ERL(52) = 47.534
ERL(80) = 75.838
ERL(25) = 20.943
ERL(53) = 48.536
ERL(81) = 76.856
ERL(26) = 21.904
ERL(54) = 49.539
ERL(82) = 77.874
ERL(27) = 22.867
ERL(55) = 50.543
ERL(83) = 78.893
ERL(28) = 23.833
ERL(56) = 51.548
ERL(84) = 79.912
ERL(29) = 24.802
ERL(57) = 52.553
ERL(85) = 80.932
ERL(30) = 25.773
ERL(58) = 53.559
ERL(86) = 81.952
ERL(31) = 25.746
ERL(59) = 54.566
ERL(87) = 82.972
ERL(32) = 26.721
ERL(60) = 55.573
ERL(88) = 83.993
ERL(33) = 28.698
ERL(61) = 56.581
ERL(89) = 85.014
ERL(34) = 29.677
ERL(62) = 57.59
ERL(90) = 86.035
ERL(35) = 30.657
ERL(63) = 58.599
ERL(91) = 87.057
ERL(36) = 31.64
ERL(64) = 56.609
ERL(92) = 88.079
ERL(37) = 32.624
ERL(65) = 60.619
ERL(93) = 89.101
ERL(38) = 33.609
ERL(66) = 61.63
ERL(94) = 90.123
ERL(39) = 34.596
ERL(67) = 62.642
ERL(95) = 91.146
ERL(40) = 35.584
ERL(68) = 63.654
ERL(96) = 92.169
ERL(41) = 36.574
ERL(69) = 64.667
ERL(97) = 93.193
ERL(42) = 37.565
ERL(70) = 65.68
ERL(98) = 94.216
ERL(43) = 38.557
ERL(71) = 66.694
ERL(99) = 95.24
ERL(44) = 39.55
ERL(72) = 67.708
ERL(45) = 40.545
ERL(73) = 68.723
'********************************************
'Tinh tong luu luong
77
Ph lc 2
n1 = 1
tongLuuLuong = 0
For i = 1 To Val(TxtN.Text)
a(i) = n1 * t(i) / 3600
tongLuuLuong = tongLuuLuong + a(i)
Next i
'********************************************
'Tinh so kenh
Dim temp1 As Double
Dim temp2 As Double
Dim vt As Integer
kenhNt = 0
vt = 0
temp1 = Abs(ERL(0) - tongLuuLuong)
For i = 1 To 99
temp2 = Abs(ERL(i) - tongLuuLuong)
If (temp1 > temp2) Then
temp1 = temp2
vt = i
End If
Next i
kenhNt = vt + 1
'********************************************
'Tinh SIR_real
Dim No As Double
No = 10 * log10(290 * 1.38 * Exp(-23 * Log(10))) + Nf + 30
For i = 1 To Val(TxtN.Text)
SF(i) = 10 * log10(3.84 / Rt(i))
If Rt(i) = 144 Then
Lp = -81.9
78
Ph lc 2
Al = -4.2
Gm = 2
Ca = 1
ElseIf Rt(i) = 384 Then
Lp = -84.5
Al = -7.3
Gm = 2
Ca = 1
Else
Lp = -72.8
Al = -7.3
Gm = 0
Ca = 0.67
End If
Pma(i) = Pme(i) - Lm - Gm
Pcu(i) = Pme(i) + Lp + Al + Gt + Lt
Iutr(i) = Pcu(i) + 10 * log10(kenhNt - 1) + 10 * log10(Ca) - 10 * log10(Bw)
Ictr(i) = Iutr(i) + 10 * log10(1 / fr - 1)
Itr(i) = 10 * log10(Exp(0.1 * Iutr(i) * Log(10)) + Exp(0.1 * Ictr(i) * Log(10)))
Io(i) = 10 * log10(Exp(0.1 * Itr(i) * Log(10)) + Exp(0.1 * No * Log(10)))
SIRreal(i) = SF(i) - Io(i) - 10 * log10(Bw)
Next i
'*************************************************
'Phuong phap DSSPC
For i = 1 To Val(TxtN.Text)
If SIRreal(i) > SIRMax Then
Pdk(i) = Pma(i) - aa * b2
ElseIf (SIRreal(i) >= SIROptMax) And (SIRreal(i) <= SIRMax) Then
Pdk(i) = Pma(i) - aa * b1
ElseIf (SIRreal(i) >= SIROptMin) And (SIRreal(i) < SIROptMax) Then
79
Ph lc 2
Pdk(i) = Pma(i)
ElseIf (SIRreal(i) >= SIRMin) And (SIRreal(i) < SIROptMin) Then
Pdk(i) = Pma(i) + aa * b1
ElseIf SIRreal(i) < SIRMin Then
Pdk(i) = Pma(i) + aa * b2
End If
Po(i) = Pma(i)
Next i
*****************************************************
'Phuong phap DPC
For i = 1 To Val(TxtN.Text)
If Rt(i) = 144 Then
gamaT = EbNo2 + 10 * log10(Rt(i) / 3840)
ElseIf Rt(i) = 384 Then
gamaT = EbNo3 + 10 * log10(Rt(i) / 3840)
Else: gamaT = EbNo1 + 10 * log10(Rt(i) / 3840)
End If
Pn(1) = Pma(i)
For l = 1 To Val(TxtN.Text) - 1
gamaI(l) = SIRreal(i)
Pn(l + 1) = Pn(l) + Exp(k * (dBtodBm(gamaT) - dBtodBm(gamaI(i))))
Pn1(i) = Pn(10)
Next l
Next i
Dim j As Integer
Dim tt As Double
For i = 1 To Val(TxtN.Text) - 1
For j = i + 1 To Val(TxtN.Text)
If SIRreal(i) > SIRreal(j) Then
tt = SIRreal(i)
80
Ph lc 2
SIRreal(i) = SIRreal(j)
SIRreal(j) = tt
End If
If Po(i) < Po(j) Then
tt = Po(i)
Po(i) = Po(j)
Po(j) = tt
End If
If Pdk(i) < Pdk(j) Then
tt = Pdk(i)
Pdk(i) = Pdk(j)
Pdk(j) = tt
End If
If Pn1(i) < Pn1(j) Then
tt = Pn1(i)
Pn1(i) = Pn1(j)
Pn1(j) = tt
End If
Next j
Next i
End Sub
*******************************************************
Private Sub cmbRt_Click()
If cmbRt.Text = 12.2 Then
Txt1.Text = 0
Txt2.Text = -3
Txt3.Text = 21
Txt4.Text = 18
Txt5.Text = 5
Txt6.Text = -141.9
81
Ph lc 2
Txt7.Text = -7.3
Txt8.Text = -2
Txt9.Text = 0.67
Txt10.Text = 0.65
Txt11.Text = 5
ElseIf cmbRt.Text = 144 Then
Txt1.Text = 2
Txt2.Text = -3
Txt3.Text = 26
Txt4.Text = 18
Txt5.Text = 5
Txt6.Text = -133.8
Txt7.Text = -4.2
Txt8.Text = -2
Txt9.Text = 1
Txt10.Text = 0.65
Txt11.Text = 5
Else
Txt1.Text = 2
Txt2.Text = -3
Txt3.Text = 18
Txt4.Text = 18
Txt5.Text = 5
Txt6.Text = -139.9
Txt7.Text = -7.3
Txt8.Text = -2
Txt9.Text = 1
Txt10.Text = 0.65
Txt11.Text = 5
End If
82
Ph lc 2
End Sub
**************************************************
Private Sub cmdL1KetQua_Click()
Grid1.Row = 0
Grid1.Col = 0
Grid1.Text = " SIR(I)"
Grid1.Row = 0
Grid1.Col = 1
Grid1.Text = " Kt qu"
Call Startva
For i = 1 To (Val(TxtN.Text))
Grid1.Rows = i + 1
Grid1.Row = i
Grid1.Col = 0
Grid1.Text = "SIR[" & Trim(Str(i - 1)) & "]" & "="
Grid1.Col = 1
Grid1.Text = Round(SIRreal(i), 4)
Next i
End Sub
Private Sub cmdL1Xoa_Click()
For i = 1 To (Val(TxtN.Text))
Grid1.Rows = i + 1
Grid1.Row = i
Grid1.Col = 0
Grid1.Text = " "
Grid1.Col = 1
Grid1.Text = " "
Next i
End Sub
83
Ph lc 2
************************************************
Private Sub cmdL2KetQua_Click()
Grid2.Row = 0
Grid2.Col = 0
Grid2.Text = " Po(i)"
Grid2.Row = 0
Grid2.Col = 1
Grid2.Text = " DSSPC"
Grid2.Row = 0
Grid2.Col = 2
Grid2.Text = " DPC"
For i = 1 To (Val(TxtN.Text))
Grid2.Rows = i + 1
Grid2.Row = i
Grid2.Col = 0
Grid2.Text = " Po[" & Trim(Str(i - 1)) & "]" & "="
Grid2.Col = 1
Grid2.Text = Po(i)
Grid2.Col = 2
Grid2.Text = Po(i)
Next i
End Sub
Private Sub cmdL2Xoa_Click()
For i = 1 To (Val(TxtN.Text))
Grid2.Rows = i + 1
Grid2.Row = i
Grid2.Col = 0
Grid2.Text = " "
Grid2.Col = 1
84
Ph lc 2
Grid2.Text = " "
Grid2.Col = 2
Grid2.Text = " "
Next i
End Sub
***********************************************
Private Sub cmdL3KetQua_Click()
Grid3.Row = 0
Grid3.Col = 0
Grid3.Text = " Pdk(i) "
Grid3.Row = 0
Grid3.Col = 1
Grid3.Text = "
DSSPC "
Grid3.Row = 0
Grid3.Col = 2
Grid3.Text = " DPC "
For i = 1 To (Val(TxtN.Text))
Grid3.Rows = i + 1
Grid3.Row = i
Grid3.Col = 0
Grid3.Text = "PDK[" & Trim(Str(i - 1)) & "]" & "= "
Grid3.Col = 1
Grid3.Text = Pdk(i)
Grid3.Col = 2
Grid3.Text = Round(Pn1(i), 3)
Next i
End Sub
***********************************************
Private Sub putPixel1(x, y, mau As Byte)
graph.Circle (391, 279), 1.6, RGB(255, 0, 0)
85
Ph lc 2
graph.Circle (396, 284), 1.6, RGB(255, 0, 0)
End Sub
Private Sub putPixel(x, y, mau As Byte)
Dim CX As Double
Dim CY As Double
Dim delx As Double
Dim dely As Double
Dim x1 As Double
Dim y1 As Double
Dim j As Double
CX = 0
CY = 0
delx = 0
dely = 0
x1 = 0
y1 = 0
If (x < 6) Or (y < 22) Then Exit Sub
For i = 1 To (x \ 1) - 6 'vi truc x bat dau tu 6
x1 = x1 + 31.825
Next i
CX = x1 + (x - x \ 1) * 31.825
For i = 1 To (y \ 1) - 22 'vi truc y bat dau tu 22
y1 = y1 + 21.407
Next i
CY = y1 + (y - y \ 1) * 21.407
CY = graph.ScaleHeight * (1#) - CY
86
Ph lc 2
If mau = 1 Then
graph.Circle (CX, CY), 1.6, RGB(255, 0, 0)
ElseIf mau = 2 Then
graph.Circle (CX, CY), 1.6, RGB(0, 0, 255)
Else
graph.Circle (CX, CY), 1.6, RGB(0, 255, 0)
End If
End Sub
Private Sub cmdL4BieuDo_Click()
picBieuDo.Visible = False
graph.Visible = True
Dim y As Double
For y = 1 To Val(TxtN.Text)
Call putPixel(SIRreal(y), Po(y), 1)
Call putPixel(SIRreal(y), Pdk(y), 2)
Call putPixel(SIRreal(y), Pn1(y), 3)
Next y
End Sub
Private Sub Command10_Click()
MGrid1.Row = 0
MGrid1.Col = 0
MGrid1.Text = " SIR_real"
MGrid1.Row = 0
MGrid1.Col = 1
MGrid1.Text = " Po"
MGrid1.Row = 0
MGrid1.Col = 2
MGrid1.Text = " DSSPC"
87
Ph lc 2
MGrid1.Row = 0
MGrid1.Col = 3
MGrid1.Text = " DPC"
For i = 1 To (Val(TxtN.Text))
MGrid1.Rows = i + 1
MGrid1.Row = i
MGrid1.Col = 0
MGrid1.Text = Round(SIRreal(i), 4)
MGrid1.Col = 1
MGrid1.Text = Po(i)
MGrid1.Col = 2
MGrid1.Text = Pdk(i)
MGrid1.Col = 3
MGrid1.Text = Round(Pn1(i), 3)
Next i
End Sub
Private Sub command6_Click()
For i = 1 To (Val(TxtN.Text))
Grid3.Rows = i + 1
Grid3.Row = i
Grid3.Col = 0
Grid3.Text = " "
Grid3.Col = 1
Grid3.Text = " "
Grid3.Col = 2
Grid3.Text = " "
Next i
End Sub
Private Sub cmdL4Thoat_Click()
88
Ph lc 2
End
End Sub
Private Sub Command7_Click()
For i = 1 To (Val(TxtN.Text))
MGrid1.Rows = i + 1
MGrid1.Row = i
MGrid1.Col = 0
MGrid1.Text = " "
MGrid1.Col = 1
MGrid1.Text = " "
MGrid1.Col = 2
MGrid1.Text = " "
MGrid1.Col = 3
MGrid1.Text = " "
Next i
End Sub
Private Sub Command9_Click()
End
End Sub
Private Sub Form_Load()
TxtN.Text = " "
ReDim t(Val(TxtN.Text))
ReDim a(Val(TxtN.Text))
ReDim Rt(Val(TxtN.Text))
ReDim Pme(Val(TxtN.Text))
ReDim Pma(Val(TxtN.Text))
89
Ph lc 2
ReDim SF(Val(TxtN.Text))
ReDim Pcu(Val(TxtN.Text))
ReDim Iutr(Val(TxtN.Text))
ReDim Ictr(Val(TxtN.Text))
ReDim Itr(Val(TxtN.Text))
ReDim Io(Val(TxtN.Text))
ReDim SIRreal(Val(TxtN.Text))
ReDim ERL(100)
ReDim gamaI(Val(TxtN.Text))
ReDim Pdk(Val(TxtN.Text))
ReDim Po(Val(TxtN.Text))
ReDim Pn(Val(TxtN.Text))
ReDim Pn1(Val(TxtN.Text))
For i = 1 To Val(TxtN.Text)
t(i) = CInt(Rnd1(90, 210))
Rt(i) = Rnd1(9.6, 374 + 9.6)
Pme(i) = Rnd1(18, 30)
Next i
Tinh
End Sub
Private Sub Startva()
ReDim t(Val(TxtN.Text))
ReDim a(Val(TxtN.Text))
ReDim Rt(Val(TxtN.Text))
ReDim Pme(Val(TxtN.Text))
ReDim Pma(Val(TxtN.Text))
90
Ph lc 2
ReDim SF(Val(TxtN.Text))
ReDim Pcu(Val(TxtN.Text))
ReDim Iutr(Val(TxtN.Text))
ReDim Ictr(Val(TxtN.Text))
ReDim Itr(Val(TxtN.Text))
ReDim Io(Val(TxtN.Text))
ReDim SIRreal(Val(TxtN.Text))
ReDim ERL(100)
ReDim gamaI(Val(TxtN.Text))
ReDim Pdk(Val(TxtN.Text))
ReDim Po(Val(TxtN.Text))
ReDim Pn(Val(TxtN.Text))
ReDim Pn1(Val(TxtN.Text))
For i = 1 To Val(TxtN.Text)
t(i) = CInt(Rnd1(90, 210))
Rt(i) = Rnd1(9.6, 374 + 9.6)
Pme(i) = Rnd1(18, 30)
Next i
Tinh
End Sub
Private Function getSub1(x As String) As String
Dim Index
Index = InStr(x, ".")
getSub1 = Left(x, Index + 1)
End Function
Private Sub command1_Click()
graph.Visible = False
picBieuDo.Visible = True
91
Ph lc 2
picBieuDo.Cls
' Ve bieu do: SIRreal(), Po()
Dim MaxHDrawArea As Double, MaxWDrawArea As Double ' do rong vung de
ve
Dim goc As PointType
Dim XUnit As Double, YUnit As Double ' 1 don vi = bao nhieu twip
Dim countPoint As Double
Dim temp, temp0, temp1, temp2 As Double, i As Long
MaxHDrawArea = picBieuDo.Height - 480
MaxWDrawArea = picBieuDo.Width - 480
goc.x = 360
goc.y = picBieuDo.Height - 360
' Ve cac phuong toa do
picBieuDo.DrawWidth = 2
picBieuDo.Line (goc.x, goc.y)-(goc.x, 120), QBColor(13) 'trucPo
picBieuDo.Line (goc.x, goc.y)-(MaxWDrawArea, goc.y), QBColor(13) 'trucsir
've mui ten sir
picBieuDo.Line (MaxWDrawArea - 150, goc.y - 40)-(MaxWDrawArea, goc.y),
QBColor(12)
picBieuDo.Line (MaxWDrawArea - 150, goc.y + 30)-(MaxWDrawArea, goc.y),
QBColor(12)
've mui ten Po
picBieuDo.Line (goc.x - 30, 270)-(goc.x, 120), QBColor(12)
picBieuDo.Line (goc.x + 25, 270)-(goc.x, 120), QBColor(12)
picBieuDo.CurrentX = 60
picBieuDo.CurrentY = 0
92
Ph lc 2
picBieuDo.Print "CONG SUAT"
picBieuDo.CurrentX = 1600
picBieuDo.CurrentY = 80
picBieuDo.Print "Po"
picBieuDo.CurrentX = 3000
picBieuDo.CurrentY = 80
picBieuDo.Print " PDC"
picBieuDo.CurrentX = 4400
picBieuDo.CurrentY = 80
picBieuDo.Print "DSSPC"
picBieuDo.CurrentX = 6200
picBieuDo.CurrentY = 5200
picBieuDo.Print "SIR"
'********************************************
picBieuDo.DrawWidth = 4
picBieuDo.Line (goc.x + 1200, goc.y - 4850)-(goc.x + 1500, goc.y - 4850),
QBColor(9) 'trucPo
picBieuDo.Line (goc.x + 2700, goc.y - 4850)-(goc.x + 3000, goc.y - 4850),
QBColor(5) 'trucPo
picBieuDo.Line (goc.x + 4100, goc.y - 4850)-(goc.x + 4500, goc.y - 4850),
QBColor(12) 'trucPo
Ph lc 2
picBieuDo.CurrentX = 60
picBieuDo.CurrentY = 4400
picBieuDo.Print "5
------------------------------------------------------------------------------------------------"
picBieuDo.CurrentX = 60
picBieuDo.CurrentY = 3200
picBieuDo.Print "15
------------------------------------------------------------------------------------------------"
picBieuDo.CurrentX = 60
picBieuDo.CurrentY = 2600
picBieuDo.Print "20
------------------------------------------------------------------------------------------------"
picBieuDo.CurrentX = 60
picBieuDo.CurrentY = 2000
picBieuDo.Print "25
------------------------------------------------------------------------------------------------"
picBieuDo.CurrentX = 60
picBieuDo.CurrentY = 1400
picBieuDo.Print "30
------------------------------------------------------------------------------------------------"
picBieuDo.CurrentX = 60
picBieuDo.CurrentY = 800
picBieuDo.Print "35
-------------------------------------------------------------------------------------------------"
'*******************************************************
countPoint = Val(TxtN.Text)
' Xac dinh XUnit, YUnit
temp = 0
For i = 0 To countPoint
94
Ph lc 2
If temp < SIRreal(i) Then temp = SIRreal(i)
Next i
XUnit = Round(MaxWDrawArea / (Round(temp) + 4))
've pdk
temp0 = 0
For i = 0 To countPoint
If temp0 < Pdk(i) Then temp0 = Pdk(i)
Next i
YUnit = Round(MaxHDrawArea / (Round(temp0) + 8))
've pn1
temp1 = 0
For i = 0 To countPoint
If temp1 < Pn1(i) Then temp1 = Pn1(i)
Next i
YUnit = Round(MaxHDrawArea / (Round(temp1) + 8))
've pn1
temp2 = 0
For i = 0 To countPoint
If temp2 < Po(i) Then temp2 = Pn1(i)
Next i
YUnit = Round(MaxHDrawArea / (Round(temp2) + 8))
' Ve bieu do
picBieuDo.DrawWidth = 2
For i = 1 To countPoint
picBieuDo.Line (goc.x + Round(SIRreal(i - 1) * XUnit), goc.y Round(Pdk(i - 1) * YUnit))-(goc.x + Round(SIRreal(i) * XUnit), goc.y Round(Pdk(i - 1) * YUnit)), QBColor(12)
95
Ph lc 2
picBieuDo.Line (goc.x + Round(SIRreal(i - 1) * XUnit), (goc.y Round(Po(i - 1) * YUnit)) + 100)-(goc.x + Round(SIRreal(i) * XUnit), (goc.y Round(Po(i - 1) * YUnit)) + 100), QBColor(9)
picBieuDo.Line (goc.x + Round(SIRreal(i - 1) * XUnit), (goc.y - Round(Pn1(i
- 1) * YUnit)) - 100)-(goc.x + Round(SIRreal(i) * XUnit), (goc.y - Round(Pn1(i - 1)
* YUnit)) - 100), QBColor(5)
Next i
End Sub
96