Thema Datum  Von Nutzer Rating
Antwort
08.01.2013 16:47:01 ArtBCI
NotSolved
09.01.2013 11:50:41 Gast75364
NotSolved
09.01.2013 14:34:21 ArtBCI
NotSolved
09.01.2013 14:43:08 Gast81837
NotSolved
09.01.2013 16:50:40 ArtBCI
NotSolved
09.01.2013 16:56:06 ArtBCI
NotSolved
Rot Invertierung einer Matrix mit großer Dimension
09.01.2013 23:17:36 Trägheit
Solved
09.01.2013 23:24:20 Gast90886
NotSolved

Ansicht des Beitrags:
Von:
Trägheit
Datum:
09.01.2013 23:17:36
Views:
2297
Rating: Antwort:
 Nein
Thema:
Invertierung einer Matrix mit großer Dimension

Ok, ein Beispiel:

Option Explicit

Sub Beispiel()
  
  Const C_ML_WORKSPACE As String = "base"
  
  Dim oML As MLApp.MLApp
  Dim A()     As Double
  Dim Ai()    As Double 'inverse von Matrix A
  Dim strA    As String
  Dim strAi   As String
  Dim strAii  As String
  
  Set oML = New MLApp.MLApp
  
  A = RandomMatrix2D(2) 'zufällige VBA-Matrix erzeugen
  
  With oML
    
    .PutWorkspaceData "A", C_ML_WORKSPACE, A  'Matrix A -> Matlab
    
    .Execute "Ai = inv(A)"                    'Inverse von Matrix A berechnen und in Ai speichern - als würde man es in Matlab eingeben
    .Execute "Aii = inv(Ai)"                  'Inverse von inverser Matrix A (also wieder A) berechnen - als würde man es in Matlab eingeben
    
    Ai = .GetVariable("Ai", C_ML_WORKSPACE)   'Matrix Ai -> inverse Matrix A (zur Verwendung in VBA)
    
    strA = .Execute("A")                      'Matrix A als Zeichenkette
    strAi = .Execute("Ai")                    'Matrix Ai als Zeichenkette
    strAii = .Execute("Aii")                  'Matrix Aii als Zeichenkette (gleicht strA)
    
    .Quit
    
  End With
  
  Set oML = Nothing
  
  MsgBox strA & strAi & strAii 'Ausgabe aller drei Matrizen
  
End Sub

'Hilfsfunktion um ein Beispiel zu erzeugen
Function RandomMatrix2D(n As Long) As Double()
  
  Const C_MIN As Double = 0
  Const C_MAX As Double = 100
  
  Randomize Timer
  
  Dim m() As Double
  Dim i As Long
  Dim j As Long
  
  ReDim m(0 To n - 1, 0 To n - 1)
  
  For i = 0 To n - 1
    For j = 0 To n - 1
      m(i, j) = (C_MAX - C_MIN) * CDbl(Rnd()) + C_MIN
    Next
  Next
  
  RandomMatrix2D = m
  
End Function

 

Gruß


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
08.01.2013 16:47:01 ArtBCI
NotSolved
09.01.2013 11:50:41 Gast75364
NotSolved
09.01.2013 14:34:21 ArtBCI
NotSolved
09.01.2013 14:43:08 Gast81837
NotSolved
09.01.2013 16:50:40 ArtBCI
NotSolved
09.01.2013 16:56:06 ArtBCI
NotSolved
Rot Invertierung einer Matrix mit großer Dimension
09.01.2013 23:17:36 Trägheit
Solved
09.01.2013 23:24:20 Gast90886
NotSolved