如何在Accord.Math矩阵类中使用MeshGrid方法?

时间:2014-12-15 20:56:28

标签: c# accord.net

我在c#中使用Visual Studio的Accord.Math命名空间。

我正在尝试使用方法MeshGrid<>在Accord.Math命名空间的Matrix类下。但是,我不确定如何在阅读此处所见的文档后实现此方法: http://accord-framework.net/docs/html/M_Accord_Math_Matrix_MeshGrid__1.htm

有人能告诉我如何正确实施这种方法吗?

我有两个名为xa和ya的Double [,]变量,我试图传递给MeshGrid。我尝试过使用:

var q = Matrix.MeshGrid(xa,ya);

但是,对于这种说法,不能从它们的用法推断出类型参数。

MeshGrid的输出是一个2元组。 T1是T [,] T2是T [,]

1 个答案:

答案 0 :(得分:0)

Accord.NET中的MeshGrid方法类似于MATLAB和Octave的网格网格函数。它可用于帮助创建表面图such as this one detailed in Octave's documentation page。这个方法接受两个向量作为输入,但遗憾的是,如果传递两个双[,]矩阵而不是double []向量,则不起作用。

如果你想看看它是如何工作的以及这个方法产生的输出是什么,也许我们使用LINQPad中的MeshGrid函数运行一个小片段。如果您有兴趣,请将以下LINQpad查询定义复制并粘贴到文本文件中,并使用" .linq"扩展:

<Query Kind="Program">
  <Reference>&lt;RuntimeDirectory&gt;\System.Windows.Forms.dll</Reference>
  <NuGetReference>Accord.Controls</NuGetReference>
  <NuGetReference>Accord.Math</NuGetReference>
  <Namespace>Accord.Controls</Namespace>
  <Namespace>Accord.Math</Namespace>
</Query>

void Main()
{
    double[] x = { 1, 2, 3 };
    double[] y = { 4, 5, 6 };

    var M = Matrix.MeshGrid(x, y);

    double[,] X = M.Item1;
    double[,] Y = M.Item2;

    DataGridBox.Show(X, "X");
    DataGridBox.Show(Y, "Y");
}

使用&#34; .linq&#34;保存此文件后扩展,双击它以使用LINQPad打开它:

Snippet above in LINQPad

进入LINQPad后,按F5执行上面的代码片段。您将获得以下输出窗口,分别显示X和Y矩阵的内容:

X Y