Math.net 在 class 方法中读取的数据未分配给 class 成员

Math.net data read in class method not assigned to class member

我有一个 class 库,其中包含使用 Math.net 的对象。该库包含 classes,其中包含数据和方法。作为试验,我正在实例化一个成员 class 的对象,然后调用 load 方法用文件中的数据填充该对象。但是,加载的数据不会传递给新对象。当我将对象转储到屏幕时,我得到:

EchoStateNet.EchoState+Input

我应该从哪里获取数据转储。在带有 class 定义和调用它的测试的库下方。

namespace EchoStateNet
{
    public class EchoState
    {
        // class that holds network input data
        public class Input
        {
            public Matrix<double> dataSet { get; set; }     // matrix holding train / test / run input data           

            public Input() : base() { }     // default constructor

            // method to load network data
            public void load(string filePath, string fileName)
            {
                try
                {
                    dataSet = DelimitedReader.Read<double>(Path.Combine(filePath, fileName), false, ",", false);   // read the input data
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error loading data. Exception: " + ex);
                }
            }           

        }

调用这个的部分:

namespace TestApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            EchoState.Input data = new EchoState.Input();

            data.load("..\..", "MackeyGlass_t17.txt");

            Console.WriteLine("Input data:");
            Console.WriteLine(data.ToString());
        }
    }
}

我得到的输出提示我可能没有正确实例化一个对象,但是 Math.net 的语法与典型的 List<> 声明有点不同,所以我不知道怎么了。

您希望输出什么?:

data.ToString()

您的 Input class 永远不会覆盖 .ToString() 方法,因此 System.Object 的默认实现是输出 class 名称。这是哪个:

EchoStateNet.EchoState+Input

如果您想输出其他内容,请覆盖 class 中的 .ToString() 方法。像这样:

public override string ToString()
{
    // return some string representation here
}

至于您的对象 应该 的有效字符串表示形式是什么,这取决于您。您的对象所持有的唯一状态是 Matrix<double>。我不熟悉那种类型,所以我不知道人们可能期望它是什么样子。但是无论你想要它看起来像什么,你都可以在 ToString() 方法中对其进行格式化(使用 StringBuilder and/or string.Format() 和 return 之类的结果 string.