Gå til innhold

"Kontrollere" innholdet i matriser...


Anbefalte innlegg

Skrevet

Hvis man skal kontrollere en teller, en verdi, en streng, etc, har man den kjekke MsgBox-funksjonen. Men hva hvis man skal kontrollere innholdet av en matrise?

 

Er det en enkel måte å gjøre det på?

Videoannonse
Annonse
Skrevet (endret)

En matrise er en tabular representasjon av data. Ekvalisensen i VB er to-dimmensjonerte array-er, som kan defineres slik:

 

Dim aMatrix(1 To 100, 1 To 100) As String

 

Hvis det er array-er du snakker om, vil jeg anbefale å bruke den innebygde Locals vinduet, som meget oversiktlig og enkelt viser all data i enhver variabel. Stop koden når den kjøres, enten ved å trykke på rammen og sette inn en rød sirkel eller å skrive inn kommandoen Stop. Når koden er stoppet trykker du på View og Locals window. Let deg fram etter variablenen du ønsker å studere, og trykk deg videre inn i variabelen ved å presse på pluss-ikonet.

Endret av aadnk
Skrevet

Takker for svar!

 

 

Jeg vet om Locals-vinduet, men hadde håpet at det var en enklere måte å gjøre det på.

 

Er det kjapt gjort å få en rekke/matrise (okay, "array" siden VB er engelsk ;) ) eksportert til Excel?

 

 

 

Jeg bruker VB.net

Skrevet

Hmmm ... To dimensjonert array .. Altså disse aMatrix(1,1) er ikke det samme som aMatrix(1,2) ??

 

Husker en gang jeg trengte noe lignende, men fikk det ikke til. Da vet jeg det nå da :roll:

Skrevet

Den letteste utvei er vel å teste hvert enkelt element i matrisen inne i for-next sløyfer, og ved eventuell feil angi matriseposisjon i msgbox.

Skrevet
Hmmm ... To dimensjonert array .. Altså disse aMatrix(1,1) er ikke det samme som aMatrix(1,2) ??

aMatrix(1,1) vil gi (i vb.net)

0 0

0 0

 

 

mens aMatrix(1,2) vil gi

0 0 0

0 0 0

Skrevet
Hmmm ... To dimensjonert array .. Altså disse aMatrix(1,1) er ikke det samme som aMatrix(1,2) ??

aMatrix(1,1) vil gi (i vb.net)

0 0

0 0

 

 

mens aMatrix(1,2) vil gi

0 0 0

0 0 0

Men hvordan setter man verdier hvis verdiene går nedover og bortover som på "kartet" ditt?

Skrevet

Dim mat(0 To 3, 0 To 3) As Double
Public Sub ClearMatrix()
 Dim X As Long, Y As Long
 For Y = 0 To 3
   For X = 0 To 3
     mat(x, y) = 0
   Next
 Next
End Sub
Public Sub LoadIdentity()
 Call ClearMatrix()
 mat(0, 0) = 1
 mat(1, 1) = 1
 mat(2, 2) = 1
 mat(3, 3) = 1
End Sub

 

Kartet er bare en demonstrasjon på de to dimensjonene,

du kan ha så mange dimensjoner du ønsker.

Skrevet (endret)

Nå ble jeg bare forvirret her :confused:

 

Altså .. La oss si at jeg dim'er variabel(0 to 3, 0 to 4)

Er det da slik at jeg da har alle disse variablene?

 

variabe(0,0)

variabe(1,0)

variabe(2,0)

variabe(3,0)

 

variabe(0,1)

variabe(1,1)

variabe(2,1)

variabe(3,1)

 

variabe(0,2)

variabe(1,2)

variabe(2,2)

variabe(3,2)

 

variabe(0,3)

variabe(1,3)

variabe(2,3)

variabe(3,3)

 

variabe(0,4)

variabe(1,4)

variabe(2,4)

variabe(3,4)

 

Og er det slik at for å endre verdi skriver man variabe(0,0) = "oihi" ??

 

Edit: Tror jeg har forstått det nå ..

Endret av Jonas
Skrevet
Er det da slik at jeg da har alle disse variablene?

Korrekt! :)

 

 

 

Det jeg lurer på nå er om noen vet om det er mulig for VB (.Net) å utføre standard matrise-operasjoner på arrayene (invertering, determinanter, etc)? Eller må man skrive koden selv?

 

Er det mulig å importere MATLAB-rutiner?

Skrevet

Du har jo System.Drawing.Drawing2D.Matrix da, som blir brukt til standard matrise operasjoner (som rotering, skalering, translering osv.)

men det er bare en 2x2 matrise (hvis jeg ikke tar helt feil)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...