|
Îåêßíçóå áðü ôï ìÝëïò AlKiS. Τελευταία δημοσίευση από το μέλος AlKiS στις 14-01-2012, 22:13. Υπάρχουν 11 απαντήσεις.
-
02-01-2012, 12:21
|
-
AlKiS
-
-
-
Μέλος από τις 12-01-2007
-
Volos
-
Δημοσιεύσεις 312
-
-
|
Καλημέρα ντοτ νέτ ζόουν :) κάτι πολύ περίεργο γίνεται σήμερα (δηλαδή απο χτες γίνεται αλλά προτού γράψω γιαυτό έπρεπε να κάνω δοκιμές να το λύσω μόνος...) Αντιμεταθέτω τυχαία στοιχεία απο την μια μεριά του πίνακα στην άλλη σε ένα 2-dimentional Αrray(1,ν) Αυτό το κάνω καλώντας Random Number απο 0 ως 1, άρα όταν είναι 0 ΔΕΝ γίνεται η αντιμετάθεση, όταν βγει 1 τότε γίνεται. Κρατάω όλες τις τιμές των random αριθμών σε μια μεταβλητή, και τους "αντιμεταθετιμένους" πίνακες σε μια άλλη. συγκρίνοντας αυτές τις 2 μεταβλητές, όταν βλέπω "0" θα έπρεπε να μην βλέπω αντιμετάθεση, όταν βλέπω "1" θα έπρεπε να βλέπω.. αλλά πριτσ, ότι θέλει κάνει.. Που είναι το λάθος, έσπασα το κεφάλιμου να το βρω αλλά μου φαίνεται ολόσωστο ρε γμτ.. Private Sub btnPermutation_Click(sender As System.Object, e As System.EventArgs) Handles btnPermutation.Click
Dim f_DataSet(,) As Decimal
Dim n_NumberOfErrors As Integer
Dim G_PermutationIndices(,) As Boolean
Dim f_Permuted()(,) As Decimal
Dim MaximumVerticalDeviation() As Decimal
If dgvData.SelectedColumns.Count = 2 Then
If txtRepetition.Text <> "" Then
If CULng(txtRepetition.Text) >= 2 Then
n_NumberOfErrors = dgvData.Rows.Count
ReDim f_DataSet(1, n_NumberOfErrors)
For i As Integer = 0 To n_NumberOfErrors - 1
f_DataSet(0, i) = CDec(dgvData.Item(dgvData.SelectedColumns(1).Index, i).Value)
f_DataSet(1, i) = CDec(dgvData.Item(dgvData.SelectedColumns(0).Index, i).Value)
Next
Call TwoPairedSamplesPermutation(f_DataSet, CInt(txtRepetition.Text), n_NumberOfErrors, G_PermutationIndices, f_Permuted)
ReDim MaximumVerticalDeviation(n_NumberOfErrors)
'Rdo.SetSymbol("PermutedSet1", )
'MaximumVerticalDeviation = CType(Rdo.Evaluate("ks.test("), Decimal())
MsgBox("Done!")
Else
MsgBox("The permutation's repetition must be greater than or equal to 2", MsgBoxStyle.Exclamation)
End If
Else
MsgBox("You need to set how many times to repeat the permutation proceedure first!", MsgBoxStyle.Exclamation)
End If
ElseIf dgvData.Columns.Count = 0 Then
MsgBox("You need some data first!" & vbCrLf & "Either import some data by clicking the " & RemBtnHotLetter(btnImport) & " or insert the data into the grid by hand.", MsgBoxStyle.Exclamation)
Else
MsgBox("You need to have two (2) colums selected for the permutation to work.", MsgBoxStyle.Exclamation)
End If
'TODO CODE
'If P < 0.05 Then
' MsgBox("Statistically significant Difference" & ks.gof.observed & )
'
'End If
End Sub
Και to sub που καλείτε είναι αυτό:
Dim txtStr As New TextBox
Dim RandomClass As New Random()
Dim RandomNumber As Integer
Public Sub TwoPairedSamplesPermutation(ByVal f_DataSet(,) As Decimal, ByVal T_Repetition As Integer, ByVal n_NumberOfErrors As Integer, ByRef G_PermutationIndices(,) As Boolean, ByRef f_Permuted_o()(,) As Decimal)
ReDim G_PermutationIndices(n_NumberOfErrors - 1, T_Repetition - 1)
Dim f_Permuted(T_Repetition - 1)(,) As Decimal
Dim txtIndices As New TextBox
For i As Integer = 0 To T_Repetition - 1 'For every repetition
Dim Str(n_NumberOfErrors) As String
Str(0) = " " & "V1" & " " & "V2"
f_Permuted(i) = f_DataSet
For j = 0 To n_NumberOfErrors - 1 'For Rows.Length
RandomNumber = RandomClass.Next(2)
If RandomNumber = 0 Then
G_PermutationIndices(j, i) = False
'Do not permute!
Else
G_PermutationIndices(j, i) = True
Dim tempDec As Decimal = f_Permuted(i)(0, j) 'Permutation..
f_Permuted(i)(0, j) = f_Permuted(i)(1, j)
f_Permuted(i)(1, j) = tempDec
End If
Str(j + 1) = j + 1 & ")" & " " & f_Permuted(i)(0, j) & " " & f_Permuted(i)(1, j)
Next j 'End of Permutation
Dim tmpTxt As New TextBox With {.Lines = Str}
txtStr.Text = txtStr.Text &∓ vbCrLf & vbCrLf & "Permutation No: " & i + 1 & vbCrLf & tmpTxt.Text
Next i '/End of Main Loop
f_Permuted_o = f_Permuted
txtStr.Text = txtStr.Text.Substring(4) 'Saving Permutation to Text
WriteText(My.Computer.FileSystem.SpecialDirectories.Desktop & "\Permuted Samples.txt", txtStr.Text)
For i As Integer = 0 To T_Repetition - 1 'Saving the Indices to Text
txtIndices.Text = txtIndices.Text & " " & "T" & i + 1
Next i
For i As Integer = 0 To n_NumberOfErrors - 1
txtIndices.Text = txtIndices.Text & vbCrLf & i + 1 &∓ ")"
For j = 0 To T_Repetition - 1
txtIndices.Text = txtIndices.Text & " " & CType(G_PermutationIndices(i, j), Integer) * -1
Next
Next
WriteText(My.Computer.FileSystem.SpecialDirectories.Desktop & "\Permutation Indices.txt", txtIndices.Text) '/End of Indices Save
End Sub
End Module
|
|
-
04-01-2012, 18:44
|
-
Libra Storm
-
-
-
Μέλος από τις 28-01-2011
-
Χαϊδάρι
-
Δημοσιεύσεις 142
-
-
|
Απ' ότι καταλαβαίνω θέλεις να κάνεις αλλάξεις την σειρά των στοιχείων του αρχικού πίνακα σε κάποιον άλλον. Δεν έχω κάτι συγκεκριμένο να σου προτείνω αλλά κάποιες επισημάνσεις που ίσως σε βοηθήσουν. 1
| ReDim f_DataSet(1, n_NumberOfErrors) ' Μήπως θέλεις να πεις n_NumberOfErrors - 1 ? |
1
2
3
4
| f_Permuted(i) = f_DataSet ' Εδώ δεν παίρνεις κόπια του f_Dataset αλλά την διεύθυνση του.
' Δηλαδή κάθε φορά που αλλάζεις μία τιμη στο f_Permuted(i) θα αλλάζει και η τιμή του αντίστοιχου στοιχείου στο f_Dataset και το αντίθετο.
' Στην συγκεκριμένη περίπτωση κάθε row του f_Permuted (f_Permuted(0), f_Permuted(1), f_Permuted(2), f_Permuted(3) κλπ) θα σου δείχνουν στις ίδιες τιμές.
' Τα Arrays είναι reference types. |
1
2
3
4
| ' Εδώ που κάνεις το swap δεν αλλάζει μόνο το f_Permuted αλλά και το f_DataSet.
' Με αποτέλεσμα όταν ξαναπαίρνεις τις τιμές του f_DataSet να παίρνεις τις τιμές του τελευταίου permutation στην ουσία και όχι τις αρχικές.
f_Permuted(i)(0, j) = f_Permuted(i)(1, j)
f_Permuted(i)(1, j) = tempDec |
|
|
-
05-01-2012, 00:56
|
-
AlKiS
-
-
-
Μέλος από τις 12-01-2007
-
Volos
-
Δημοσιεύσεις 312
-
-
|
omg! Δεν θέλω refference, θέλω να δημιουργώ (n_NumberOfErrors -1) διαφορετικά arrays τα οποία θα αρχίζουν όλα με τις τιμές του "f_DataSet" Το f_DataSet δεν θα πρέπει να αλλάζει σε καμία περίπτωση... ' Μήπως θέλεις να πεις n_NumberOfErrors - 1 ?
Ναι, το πρόσεξα κι εγώ και το είχα αλλάξει στον κώδικά μου :Ρ
Αλλά το άλλο με το ότι είναι refference δεν το ήξερα.. Στο μυαλό μου ήταν τόσο καθαρά τα πράγματα Κατάλαβες όμως τι ήθελα να κάνω, πως μπορεί να γίνει αυτό? Πως να έχω ένα αρχικό Dataset και όλα τάλλα νάναι με τυχαίες αλλαγές?
|
|
-
05-01-2012, 20:27
|
-
05-01-2012, 22:57
|
-
08-01-2012, 21:45
|
-
Libra Storm
-
-
-
Μέλος από τις 28-01-2011
-
Χαϊδάρι
-
Δημοσιεύσεις 142
-
-
|
Μπορείς να το κάνεις με έναν από τους δύο παρακάτω τρόπους. Στην περίπτωσή σου κάνουν copy "πραγματικό" γιατί τα στοιχεία του array που έχεις είναι value types. Όταν όμως τα τα elements είναι reference types ή περιέχουν άλλα ref types τα πράγματα δεν είναι τόσο απλά. Δες τα παρακάτω παραδείγματα και διάβασε προσεκτικά το Documentation στο MSDN. 1
2
3
4
5
6
| ' Μπορείς έτσι
f_Permuted(i) = New Decimal(1, n_NumberOfErrors - 1) {}
Array.Copy(f_DataSet, f_Permuted(i), f_DataSet.Length)
' Ή έτσι
f_Permuted(i) = DirectCast(f_DataSet.Clone, Decimal(,)) |
Value Types and Reference Types 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| Private Sub mitsos() ' Το Ελληνικό foo
Dim AR(0) As A
Dim BR(0) As A
Dim pA As New A With {.i = 100}
AR(0) = pA
Array.Copy(AR, BR, 1) ' Swallow Copy
AR(0).i = 300 ' Εφόσον τα elements του AR και του BR Δείχνουν στο ίδιο Object οι τιμές του i θα αλλάζουν και στα δύο arrays.
MessageBox.Show(BR(0).i.ToString)
' TODO δοκίμασέ το και με Structure
End Sub
' A class is a Reference Type
Private Class A
Public i As Integer
End Class
'' A Struct is a Value Type
'Private Structure A
' Public i As Integer ' Value Type
'End Structure |
|
|
-
08-01-2012, 22:13
|
-
AlKiS
-
-
-
Μέλος από τις 12-01-2007
-
Volos
-
Δημοσιεύσεις 312
-
-
|
A ναι, το DirectCast το θυμάμαι, είναι σαν το Ctype. το New Decimal μου έκανε εντύπωση! αλλά δεν τα πάω καλά με τα άγκυστρα "{" και "}", δεν ξέρω πως χρησιμοποιούνται.
Θα χρησιμοποιήσω το "f_Permuted(i) = DirectCast(f_DataSet.Clone, Decimal(,))" για να λύσω το πρόβλημά μου, και θα δοκιμάσω εκτενώς το κώδικα για το Structure και το refference να ξεμπλέξω λίγο στο μυαλό μου τι γίνεται.
ευχαριστώ πάρα πολύ Libra Storm, να'σαι καλα!
|
|
-
13-01-2012, 20:26
|
-
AlKiS
-
-
-
Μέλος από τις 12-01-2007
-
Volos
-
Δημοσιεύσεις 312
-
-
|
Συνεχίζω να έχω το ίδιο πρόβλημα (βέβαια δεν είμαι πια μέσα στην άγνοια του "γιατί γίνεται αυτό??") αλλά δεν λύθηκε όμως το πρόβλημα. Έκανα την απαραίτητη αλλαγή απο "f_Permuted(i) = f_DataSet.Clone" σε "f_Permuted(i) = DirectCast(f_DataSet.Clone, Double()())" αλλά αντί να κάνει κάθε φορά διαφορετικό "κλόνο", έχει ένα και γίνεται ακριβώς το ίδιο με όταν δεν το χρησιμοποιούσα.. δωκίμασα να βάλω new "DirectCast(f_DataSet.Clone, Double()())", "f_Permuted(i) = New Double()()" και τέτοια αλλά πάλι χωρίς επιτυχία...
Χρειάζομαι μια άλλη ιδέα. Θέλω σε κάθε επανάληψη να δημιουργήτε ένα καινούργιο array ίδιο με το αρχικό. Αυτό... φαίνεται τόσο απλό αλλά είναι σχεδόν ακατόρθωτο Οο.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
| Imports STATCONNECTORSRVLib
Module modFunctions
Const SIZE_OF_DOUBLE = 8
Public Rdo As New StatConnector
Dim txtf_Permuted As New TextBox
Dim RandomClass As New Random()
Dim RandomNumber As Integer
Public Sub TwoPairedSamplesPermutation(ByVal f_DataSet()() As Double, ByVal T_Repetition As Integer, ByVal n_NumberOfErrors As Integer, ByRef G_PermutationIndices(,) _
As Boolean, ByRef f_Permuted_o()()() As Double, ByRef MaximumVerticalDeviation() As Double, ByRef pValues() As Boolean, ByRef pValueRecNumerator As Double, ByVal MaxVerticalDevMainSample As Double)
'Initialization
ReDim G_PermutationIndices(n_NumberOfErrors - 1, T_Repetition - 1)
ReDim MaximumVerticalDeviation(T_Repetition - 1)
ReDim pValues(T_Repetition - 1)
pValueRecNumerator = 0
Dim f_Permuted(T_Repetition - 1)()() As Double
Dim txtIndices As New TextBox
'/Initialization
Dim strMaxVerticalDev As String = ""
For i As Integer = 0 To T_Repetition - 1 'For every repetition
Dim Strf_Permuted(n_NumberOfErrors) As String
Strf_Permuted(0) = " " & "V1" & " " & "V2"
f_Permuted(i) = DirectCast(f_DataSet.Clone, Double()())
For j = 0 To n_NumberOfErrors - 1 'For Rows.Length
RandomNumber = RandomClass.Next(2)
If RandomNumber = 0 Then
G_PermutationIndices(j, i) = False
'Do not permute!
My.Computer.Clipboard.SetText("0" & " " & f_Permuted(i)(0)(j) & " " & f_Permuted(i)(1)(j))
MsgBox("0" & vbCrLf & f_Permuted(i)(0)(j) & " | " & f_Permuted(i)(1)(j))
Else
G_PermutationIndices(j, i) = True
Dim tempDec As Double = f_Permuted(i)(0)(j) 'Permutation..
f_Permuted(i)(0)(j) = f_Permuted(i)(1)(j)
f_Permuted(i)(1)(j) = tempDec
My.Computer.Clipboard.SetText("1" & " " & f_Permuted(i)(0)(j) & " " & f_Permuted(i)(1)(j))
MsgBox("1" & vbCrLf & f_Permuted(i)(0)(j) & " | " & f_Permuted(i)(1)(j))
End If
Strf_Permuted(j + 1) = j + 1 & ")" & " " & f_Permuted(i)(0)(j) & " " & f_Permuted(i)(1)(j)
Next j 'End of Permutation
Dim V1(n_NumberOfErrors - 1), V2(n_NumberOfErrors - 1) As Double
Buffer.BlockCopy(f_Permuted(i)(0), 0, V1, 0, n_NumberOfErrors * SIZE_OF_DOUBLE)
Buffer.BlockCopy(f_Permuted(i)(1), 0, V2, 0, n_NumberOfErrors * SIZE_OF_DOUBLE)
Rdo.SetSymbol("permutationset1", V1)
Rdo.SetSymbol("permutationset2", V2)
MaximumVerticalDeviation(i) = CType(Rdo.Evaluate("ks.test(permutationset1, permutationset2)$statistic"), Double)
strMaxVerticalDev &= " " & String.Format("{0:n1}", MaximumVerticalDeviation(i))
If MaximumVerticalDeviation(i) >= MaxVerticalDevMainSample Then
pValues(i) = True
pValueRecNumerator += 1
Else
pValues(i) = False
End If
Dim tmpTxt As New TextBox With {.Lines = Strf_Permuted}
txtf_Permuted.Text = txtf_Permuted.Text & vbCrLf & vbCrLf & "Permutation No: " & i + 1 & vbCrLf & tmpTxt.Text
Next i '/End of Main Loop
f_Permuted_o = f_Permuted
strMaxVerticalDev = "Maximum Vertical Deviation:" & vbCrLf & strMaxVerticalDev.Substring(2)
frmMain.txtResults.Text &= vbCrLf & vbCrLf & strMaxVerticalDev
WriteText(My.Computer.FileSystem.SpecialDirectories.Desktop & "\Maximum Vertical Deviation.txt", strMaxVerticalDev)
txtf_Permuted.Text = txtf_Permuted.Text.Substring(4) 'Saving Permutation to Text
frmMain.txtResults.Text &= vbCrLf & vbCrLf & "Permutation Samples:" & vbCrLf & vbCrLf & txtf_Permuted.Text
WriteText(My.Computer.FileSystem.SpecialDirectories.Desktop & "\Permuted Samples.txt", txtf_Permuted.Text)
For i As Integer = 0 To T_Repetition - 1 'Saving the Indices to Text
txtIndices.Text = txtIndices.Text & " " & "T" & i + 1
Next i
For i As Integer = 0 To n_NumberOfErrors - 1
txtIndices.Text = txtIndices.Text & vbCrLf & i + 1 & ")"
For j = 0 To T_Repetition - 1
txtIndices.Text = txtIndices.Text & " " & CType(G_PermutationIndices(i, j), Integer) * -1
Next
Next
frmMain.txtResults.Text &= vbCrLf & vbCrLf & txtIndices.Text
WriteText(My.Computer.FileSystem.SpecialDirectories.Desktop & "\Permutation Indices.txt", txtIndices.Text) '/End of Indices Save
End Sub
End Module |
|
|
-
13-01-2012, 22:57
|
-
Libra Storm
-
-
-
Μέλος από τις 28-01-2011
-
Χαϊδάρι
-
Δημοσιεύσεις 142
-
-
|
Μα δεν έχει καμία σχέση το f_Permuted(i) = DirectCast(f_DataSet.Clone, Decimal(,)) Με το f_Permuted(i) = DirectCast(f_DataSet.Clone, Double()()) Και δεν αναφέρομαι στο Double αλλά στο ότι στην 1η περίπτωση έχεις Array of (2 Dimensional) Arrays ενώ στην 2η έχεις Arrays of Arrays of Arrays. Στην 1η περίπτωση θα σου δουλέψει ενώ στην δεύτερη όχι (υπάρχει τρόπος να δουλέψει και έτσι όπως το έγραψες, αλλά θα σου πρότεινα να το κάνεις με τον 1ο τρόπο που είχες φτιάξει). Το παρακάτω παράδειγμα δεν δουλεύει σωστά: 1
2
3
4
5
6
7
8
9
| Dim f_Dataset()() As Double = New Double(0)() {New Double() {1.0#, 2.0#, 3.0#}} ' ή Dim f_Dataset()() As Double = New Double(0)() {({1.0#, 2.0#, 3.0#})}
Dim f_Permuted(1)()() As Double
f_Permuted(0) = DirectCast(f_Dataset.Clone, Double()())
f_Permuted(1) = DirectCast(f_Dataset.Clone, Double()())
f_Permuted(0)(0)(0) = 1000D
MessageBox.Show(f_Permuted(1)(0)(0).ToString) ' Δεν έχουμε copy εσωτερικά αλλά το ίδιο Array. |
|
|
-
13-01-2012, 23:33
|
-
AlKiS
-
-
-
Μέλος από τις 12-01-2007
-
Volos
-
Δημοσιεύσεις 312
-
-
|
Ναι, πράγματι, είναι διαφορετικό το ένα απο το άλλο.
Επειδή όμως έχω πρόβλημα επικοινωνίας μεταξύ VB και R χρειάστηκε να κάνω αυτό το πράγμα (δλδ array of array of array). Όταν δίνω στην R ένα array (χ,ν) με decimal η R παίρνει ένα array με άκυρα πράγματα, ενώ όταν το δίνω με array of array σε 2 1-dimentional arrays το δέχεται εντάξει. Γιαυτό και το άλλαξα.. καλύτερο ήταν με ένα 2-dimentional array παρά έτσι.. αλλά περιορισμός του ενδιάμεσου προγράμματος (διασύνδεσησ R <-> VB).
Anyway, είπες οτι υπάρχει τρόπος να πετύχω αυτό που θέλω και έτσι όπως το έχω γράψει τώρα... Πες μου τον σε παρακαλώ γιατί προσωπικά, δεν μπορώ να καταλάβω τι άλλο θέλει..
Και 2 άσχετες ερωτήσεις, απλώς επειδή πρώτη φορά είδα το "= New Double(0)() {New Double() {1.0#, 2.0#, 3.0#}}" και μου έκανε μεγάλη έκπληξη 1η άσχετη ερώτηση: Σε αυτο το παράδειγμα, απότι καταλαβαίνω τουλάχιστον, δίνεις στο "array of array" rank=1, και length=3 με τις 3 τιμές αυτές ε? 2η άσχετη ερώτηση: Τι είναι η δίεση στο τέλος? Τελευταία φορά θυμάμαι είχες βάλει ένα D. Ίδιο είναι? br
|
|
-
14-01-2012, 17:57
|
-
Libra Storm
-
-
-
Μέλος από τις 28-01-2011
-
Χαϊδάρι
-
Δημοσιεύσεις 142
-
-
|
επειδή πρώτη φορά είδα το "= New Double(0)() {New Double() {1.0#, 2.0#, 3.0#}}" και μου έκανε μεγάλη έκπληξη. - Θέμα σύνταξης είναι πιό πολύ παρά θέμα λειτουργικότητας. 1η άσχετη ερώτηση: Σε αυτο το παράδειγμα, απότι καταλαβαίνω τουλάχιστον, δίνεις στο "array of array" rank=1, και length=3 με τις 3 τιμές αυτές ε? - Χρησιμοποίησε το Rank και Length Properties στο Debug και θα δεις τι συμβαίνει. 2η άσχετη ερώτηση: Τι είναι η δίεση στο τέλος? Τελευταία φορά θυμάμαι είχες βάλει ένα D. Ίδιο είναι? - D πάει να πει ότι το νούμερο είναι Decimal, ενώ η δίεση Double. Habit είναι στις συγκεκριμένες περιπτώσεις, σε άλλες όμως δεν μπορείς να το αποφύγεις. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
| Private Sub AButtonClick(sender As System.Object, e As System.EventArgs) Handles AButton.Click
Dim f_Dataset()() As Double = New Double()() _
{
New Double() {1.0#, 2.0#, 3.0#}
}
Dim f_Permuted()()() As Double = New Double()()() _
{
New Double()() _
{
DirectCast(f_Dataset(0).Clone, Double())
},
New Double()() _
{
DirectCast(f_Dataset(0).Clone, Double())
}
}
f_Permuted(0)(0)(0) = 1000.0#
MessageBox.Show(f_Permuted(1)(0)(0).ToString)
Me.Way1()
End Sub
Sub Way1()
Dim f_Dataset()() As Double = {({1.0#, 2.0#, 3.0#})}
Dim f_Permuted()()() As Double = {
({DirectCast(f_Dataset(0).Clone, Double())}),
({DirectCast(f_Dataset(0).Clone, Double())})
}
f_Permuted(0)(0)(0) = 1000.0#
MessageBox.Show(f_Permuted(1)(0)(0).ToString)
Me.Way2()
End Sub
Sub Way2()
Dim f_Dataset()() As Double = {({1.0#, 2.0#, 3.0#})}
Dim f_Permuted()()() As Double = {
New Double(0)() {},
New Double(0)() {}
}
f_Permuted(0)(0) = DirectCast(f_Dataset(0).Clone, Double())
f_Permuted(1)(0) = DirectCast(f_Dataset(0).Clone, Double())
f_Permuted(0)(0)(0) = 1000.0#
MessageBox.Show(f_Permuted(1)(0)(0).ToString)
Me.Way3()
End Sub
Sub Way3()
Dim f_Dataset()() As Double = {({1.0#, 2.0#, 3.0#})}
Dim f_Permuted(1)()() As Double
f_Permuted(0) = New Double(0)() {}
f_Permuted(1) = New Double(0)() {}
f_Permuted(0)(0) = DirectCast(f_Dataset(0).Clone, Double())
f_Permuted(1)(0) = DirectCast(f_Dataset(0).Clone, Double())
f_Permuted(0)(0)(0) = 1000.0#
MessageBox.Show(f_Permuted(1)(0)(0).ToString)
End Sub
Sub mitsos()
' http://msdn.microsoft.com/en-us/library/s9cz43ek(v=VS.100).aspx
'Dim d As Decimal = 9999999999999999999 ' Overflow
Dim d1 As Decimal = 9999999999999999999D ' OK
Dim d2 As Decimal = 9999999999999999999UL ' OK
Dim f As Single = 1.0E+19!
End Sub |
|
|
-
14-01-2012, 22:13
|
-
AlKiS
-
-
-
Μέλος από τις 12-01-2007
-
Volos
-
Δημοσιεύσεις 312
-
-
|
Έκανα τις εξής αλλαγές: Έβαλα 1
2
3
| For i = 0 To T_Repetition - 1
f_Permuted(i) = New Double(1)() {}
Next |
κάτω απο τον ορισμό του f_permuted, αφήνοντας τον ορισμό f_permuted ως έχειν Dim f_Permuted (T_Repetition - 1)()() As Double)
και μετά έκανα τις αναγκαίες αλλαγές στο παράδειγμά σου: 1
2
| f_Permuted(i)(0) = DirectCast(f_DataSet(0).Clone, Double())
f_Permuted(i)(1) = DirectCast(f_DataSet(1).Clone, Double()) |
και δούλεψε μια χαρούλα!! Αρχικά πήρα το way2, και το άλλαξα έτσι 1
2
3
4
| Dim f_Permuted()()() As Double = {
New Double(1)() {},
New Double(1)() {}
} |
Άλλα μπορούσε να κάνει μόνο 2 repetitions. Μετά έβαλα ένα ακόμα "New Double (1)(){}" και είδα ότι μπορούσε να κάνει 3 repetitions οπότε τόπιασα το νόημα :Ρ
1000 ευχαριστώ Libra Storm. Ξέρω ότι έχει βαρεθεί να το ακούς αλλά το αξίζεις. Ότι και να πω είναι λίγο
|
|
|
|
|