Показать массив MATLAB в сетке данных C # - PullRequest
0 голосов
/ 05 февраля 2019

Я делаю приложение на C #, используя некоторые функции из MATLAB.Я разработал некоторые .dll в MATLAB и запускаю их в Visual Studio, одна из этих функций возвращает массив, и я хотел бы показать эти данные в сетке данных с использованием C #, но я не знаю, как добиться интеграции.Я буду благодарен за вашу помощь, спасибо.

1 Ответ

0 голосов
/ 12 марта 2019

Вот пример функции Matlab для создания 2D-массива:

Код MATLAB:

function result = mymatrix()
result = [[2,3,4]; [12,13,14];  [22,33,44]];
return;
end

Следующее преобразование функции в .NET dll с использованием наборов инструментов компилятора / компилятора SDK

Следующая ссылкаэти созданные DLL, а также ссылки на MWArray.dll в C #

Вот код C #, который вы просили: преобразование 2d массива в сетку данных в GridView

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            //create Object from your dll
            mymatrix.Class1 MyObject = new mymatrix.Class1();

            //run the method which gets the data and save in a MWArray object
            MWArray MatlabData= MyObject.mymatrix();

            //cast the data to MWNumericArray
            MWNumericArray TableValuesMat = (MWNumericArray)MatlabData;

            // now cast to a double array   
            double[,] TableValues = (double[,])TableValuesMat.ToArray();

            // now convert 2d array to a table in gridview:
            int height = TableValues.GetLength(0);
            int width = TableValues.GetLength(1);
            this.dataGridView1.ColumnCount = width;
            for (int r = 0; r < height; r++)
            {
                DataGridViewRow row = new DataGridViewRow();
                row.CreateCells(this.dataGridView1);

                for (int c = 0; c < width; c++)
                {
                    row.Cells[c].Value = TableValues[r, c];
                }

                this.dataGridView1.Rows.Add(row);
            }


        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...