hallå! Så här skulle du kunna göra : Kan ju bara tillägga att skillnaden är ju att din metod verkligen är en matris, medans min metod skapar en array av arrayer så att säga. I min kod så finns det heller inga krav på att arrayerna i andra dimensionen ens skall vara lika stora. Vector(0) skulle kunna innehålla en array med 10 element samtidigt som Vector(1) innehåller en med 5 element. Detta kallas för en Jagged Array, och är alltså ingen strikt matris. Ungefär så här menar jag : Tack så mycket, det hjälpte.en kolumn i matris = resultatvektor från funktion. hur löser jag det???
jag har en matris, resultat(2700,10), som får sina värden från en return vektor(2700), i en funktion (getResult).
Hur löser jag detta? Vill ha nåt i stil med
resultat(,i)=getResult
detta funkar inte... måste man göra global variabel och lösa det i funktionen, alternativt en for-loop??Sv: en kolumn i matris = resultatvektor från funktion. hur löser jag det???
<code>
Private Sub Test()
Dim vektor(2)() As Long
vektor(0) = GetVector()
vektor(1) = GetVector()
MessageBox.Show(vector(0)(2)) ' Skriver ut 2
End Sub
Private Function GetVector() As Long()
Dim v() As Long = {0, 1, 2, 3, 4}
Return v
End Function
</code>
Du får förvisso en annan ordning på dimensionerna men det kan väl inte vara avgörande.Sv:en kolumn i matris = resultatvektor från funktion. hur löser jag det???
Vill du ha en mer strikt lösning så skall du kanske skapa en egen matrisklass och skapa funktioner i denna klass som gör det du är ute efter (typ funktionerna SetColumn(column,vector) och SetRow(row,vector)). Det kanske till och med går att hitta en färdig matrisklass med liknande funktioner på nätet.Sv: en kolumn i matris = resultatvektor från funktion. hur löser jag det???
Public Class Matrix
Protected mMatrix(,) As Long
Protected mColumns As Integer
Protected mRows As Integer
Public Sub New(ByVal Rows As Integer, ByVal Columns As Integer)
ReDim mMatrix(Rows, Columns)
mRows = Rows
mColumns = Columns
End Sub
Default Public Property Item(ByVal Row As Integer, ByVal Column As Integer)
' TODO : Kontrollera att
' 0<=Row<=mRows
' 0<=Column<=mColumns
Get
Return mMatrix(Row, Column)
End Get
Set(ByVal Value)
mMatrix(Row, Column) = Value
End Set
End Property
Public Sub SetColumn(ByVal Column As Integer, ByVal Vector() As Long)
' TODO : Kontrollera storleken på Vector mot mRows.
Dim row As Integer
For row = 0 To mRows - 1
mMatrix(row, Column) = Vector(row)
Next
End Sub
Public Sub SetRow(ByVal Row As Integer, ByVal Vector() As Long)
' TODO : Kontrollera storleken på Vector mot mColumns.
Dim column As Integer
For column = 0 To mColumns - 1
mMatrix(Row, column) = Vector(column)
Next
End Sub
End Class
Testa koden med :
<code>
Dim m As New Matrix(2, 2)
' Skapa matrisen
' (1 2)
' (3 4)
m(0, 0) = 1
m(0, 1) = 2
m(1, 0) = 3
m(1, 1) = 4
MessageBox.Show(m(0, 1)) ' Skriver ut 2
m.SetColumn(1, New Long() {5, 6})
' Matrisen är nu :
' (1 5)
' (3 6)
MessageBox.Show(m(0, 1)) ' Skriver ut 5
</code>
Sv:en kolumn i matris = resultatvektor från funktion. hur löser jag det???