MWArray 到 C# 数组,无需跳槽

Posted

技术标签:

【中文标题】MWArray 到 C# 数组,无需跳槽【英文标题】:MWArray to C# array without jumping through hoops 【发布时间】:2013-11-25 23:33:06 【问题描述】:

我正在使用 MATLAB Builder NE 从 C# 运行一些 MATLAB 函数。

我有一个 MATLAB 1 行、n 列的双精度向量从我的包装 dll 返回为 MWArray,维度为 1,n。

从中获取 C# double[] 数组的最简单方法是什么?无论我做什么,我似乎都会得到更多MWArrays

【问题讨论】:

【参考方案1】:

这取决于您考虑跳过哪些障碍。我认为您需要转换为MWNumericArrayMWLogicalArrayMWCharArray 之一,并使用ToArray 方法,如here 所示。假设您有一个名为 aMWMWArray

double[,] ad = (double[,]) ((MWNumericArray) aMW).ToArray(MWArrayComponent.Real);

MWArray class documentation.

正如 Patrick 所说,使用 ToVector() 而不是 ToArray() 来获取向量而不是二维数组。

【讨论】:

谢谢。你能添加如何获得 1 个暗淡的数组 double[] 吗? 我一点也不精通 C#,但我想如果 aMW 是一维的,那么你可以改用 double[]。我无法尝试。 为了得到一个向量而不是二维数组,使用ToVector()而不是ToArray()。对于那些需要将二维数组作为向量返回的人,请记住ToVector() 使用列主顺序,因此您可能希望在返回之前在 Matlab 代码中转置矩阵,以便获得行主顺序。 @Patrick 感谢您的信息。我已将其添加到答案中以供参考,但正如我所提到的,我并不真正了解 C#,所以我无法进一步评论。【参考方案2】:

如果您使用兼容版本的 MWArray,则可以尝试 nuget package 与我创建的 MWArray 扩展。

转换为“T”类型的数组只需通过泛型方法ToArray<T> 完成。在你的情况下double[] result = aMW.ToArray<double>()

【讨论】:

以上是关于MWArray 到 C# 数组,无需跳槽的主要内容,如果未能解决你的问题,请参考以下文章

C#:MWArray 和获取类的实例

java观察者模式与消息队列,跳槽薪资翻倍

跳槽涨薪季面试题之spring boot框架

跳槽季遭遇裁员潮,互联网程序员如何优雅过冬?

跳槽一次能涨多少?今天见识到跳槽天花板。

跳槽一次能涨多少?今天见识到跳槽天花板。