Re[2]: Взаимодействие с MatLab
От: Andrew_  
Дата: 16.11.04 08:20
Оценка:
Всем спасибо за внимание к проблеме.

Действительно она решилась после написания простенького класса правда на VB.Net (в Матлабе оказывается был пример по программированию с испорльзованием VB ).

Всем кому интересно привожу текст единственного класса промежуточной библиотеки для взаимодействия с Матлабом.


Public Class cMatlab
    Dim MatLab As Object

    Public Sub InitializeA()
        MatLab = CreateObject("Matlab.Application")
    End Sub

    Public Sub FinalA()
        Call MatLab.Quit()
    End Sub

    Public Sub GetFullMatrixA(ByVal a As String, ByVal bs As String, ByRef pr As Double(,), ByRef pi As Double(,))
        Call MatLab.GetFullMatrix(a, bs, pr, pi)
    End Sub

    Public Sub PutFullMatrixA(ByVal a As String, ByVal bs As String, ByRef pr As Double(,), ByRef pi As Double(,))
        Call MatLab.PutFullMatrix(a, bs, pr, pi)
    End Sub

    Public Function ExecuteA(ByVal name As String) As String
        ExecuteA = MatLab.Execute(name)
    End Function
End Class


Для вызова надо подключить получившуюся сборку и где-нибудь в обработчике события написать что-то типа:

    mt_class.cMatlab V=new mt_class.cMatlab();
    double[,] MReal=new double[2, 4];
    double[,] MImag=new double[1, 1];
    V.InitializeA(); // инициализация и связь с матлабом
        // в этом методе можно писать любое выражение, как это делается в матлабовских M-файлах
    V.ExecuteA("surf(peaks)");
    V.ExecuteA("a = [1 2 3 4; 5 6 7 8;]");
    // Возвращает двумерный массив из Матлаба в программу
        V.GetFullMatrixA("a","base", ref MReal, ref MImag);


Вроде все работает.
Андрей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.