在C#datagrid中显示MATLAB数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C#datagrid中显示MATLAB数组相关的知识,希望对你有一定的参考价值。

我正在使用MATLAB中的一些函数制作一个C#应用程序。我在MATLAB中开发了一些.dll,我在Visual Studio上运行它,其中一个函数返回一个数组,我想用C#在数据网格中显示这些数据,但我不知道如何实现集成。我会帮助你,谢谢。

答案

这是创建2D数组的Matlab函数示例:

MATLAB代码:

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

接下来使用编译器/编译器SDK工具箱将函数转换为.NET dll

接下来引用那些创建的DLL并在C#中引用MWArray.dll

这是你要求的C#代码:在GridView中将2d数组转换为datagrid

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);
            }


        }
    }
}

以上是关于在C#datagrid中显示MATLAB数组的主要内容,如果未能解决你的问题,请参考以下文章

将 C 字符数组转换为 Matlab 字符串 [Matlab 编码器]

使用 Matlab Coder 将 C 字符数组转换为 Matlab 字符串

在 MATLAB Coder 中创建用于指定数组大小的常量

ComboBox不会在DataGridTemplateColumn中显示绑定数据

如何在matlab中从nifti图像中逐片写入?

C之数组(二十五)