【发布时间】:2016-01-29 05:10:13
【问题描述】:
我有一个包含大量时间序列信息的 c# 系统。 每个信息都存储在以下数据结构中:
public struct Tag
{
DateTime Time {get;set;}
double Value {get;set;}
}
我们实际上可以将这些标签数组视为 Matlab 向量:
标签数组:
Time | Value
... | ...
... | ...
... | ...
好的,所以我想要为用户提供一个非常简单的 UI,他可以在这些标签上编写操作和表达式。我想出的最好方法是让用户在这些标签上编写 Matlab 表达式(这样用户几乎可以用这些向量做任何事情,他不需要学习一门新语言,而且性能将要非常快 - 我忘了提,我的标签数组真的很大)
例如:
假设我们有一个 tempratureTagArray 和一个 windTagArray 存储在当前运行中。 (其中每一个都是具有周日和周一之间分钟值的数组)。
所以我希望用户写如下内容:
x = windTagArray;
y = tempratureTagArray;
然后,一个matlab表达式:
if (x > y)
result = x.^y + y./7 * 12;
else
result = exp(x) + y.^6 - 7 + (x.*y).^3 + log(y);
end
我将负责在我的 c# 程序中定义向量(x 和 y)的部分,然后我将由此创建一个 matlab .m 文件。 我需要的是一种在 matlab 上启动这些 .m 文件并在我的 c# 运行时中从这些 .m 文件中获取结果向量的简单方法。 在我看来,这似乎是处理此类问题的最简单方法(我也想知道这种方法是否足够快)
那么,有没有人对实现这样的操作有什么建议?
我考虑过启动一个后台 Matlab 程序实例,并且对于每个请求,以某种方式在 Matlab 实例上“模拟”用户操作,然后以某种方式读取结果。但我不确定这是最好的方法。我想知道是否有人必须处理这种情况。
非常感谢。
编辑: 我也很高兴听到您对此类操作的运行时间的看法。这个东西将在一个带有 matlab 的服务器上运行,它会收到很多这样的请求。我实际上考虑过 Matlab,因为我知道当您使用它的本机应用程序时它运行得非常快(当然它支持大量数学运算)
【问题讨论】:
标签: c# .net matlab time-series