Tag: matlab

当加载到matlab中时,Ilnumerics Ilpanel在winform中编译成dll时不会激活

我想在visual-studio 2012中将用c#编写的winform编译成一个dll然后加载到matlab 2013a中。 使用matlab .net接口,然后我想与winform交互,听取它的事件并通过一组预定义的公共方法传递数据。 我正在使用Windows 7 Ultimate SP2。 这非常好用,我可以与所有本机winform工具,按钮,树,面板甚至图表进行交互。 但是我想使用ILnumerics,特别是用于显示包含所有奇迹的“场景”的ILpanel。 这是因为当它被编译为dll并调用到matlab时,我在IPanel中没有渲染任何东西。 它只显示默认的椭圆形。 我可以将matlab作为一个过程添加到visual studio中并运行代码。 一切都很好。 看起来第32行的场景未正确连接到iLPanel1。 任何帮助,将不胜感激。 没有form1.Designer.cs的Form1.cs主要c#代码 using System; using System.Windows.Forms; using ILNumerics; using ILNumerics.Drawing.Plotting; using ILNumerics.Drawing; using MarkerStyle = ILNumerics.Drawing.MarkerStyle; namespace WindowsFormsApplication3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public void PlotData(double[,] myX) { var myDoubleVec […]

错误:使用Matlab .NET构建器时,’下标索引必须是实数正整数或逻辑’

我正在使用matlab NE builder来编译一个我从C#调用的dll文件。 确认matlab代码在matlab中有效,但是从c#调用时会发生以下错误: MWArray.dll中发生了未处理的“System.Exception”类型exception 附加信息: … MWMCR :: EvaluateFunction error …下标索引必须是实数正整数或逻辑。 第108行的=> KalmanFilter.m出错。 有问题的行如下: plot(data(:, 1), data(:, 2)); 我已经确认,当到达该行时,变量数据的大小为n乘以4,n> 50,为什么该语句应该有意义。 有人有这方面的经验吗? 提前致谢

在C#类库中使用MATLAB MWArray.dll

我正在尝试在C#类库中使用带有Matlab .net Complier的MATLAB构建的.dll,但程序会在每次初始化MWArray.dll的对象时抛出exception,例如: MWNumericArray m = new MWNumericArra(10,10); 例外: System.TypeInitializationException was caught HResult=-2146233036 Message=The type initializer for ‘MathWorks.MATLAB.NET.Arrays.MWNumericArray’ threw an exception. Source=MWArray TypeName=MathWorks.MATLAB.NET.Arrays.MWNumericArray StackTrace: at MathWorks.MATLAB.NET.Arrays.MWNumericArray.op_Implicit(Double[] values) at VolCalc.Vol.CalculateVolatility(Double[] data) InnerException: System.TypeInitializationException HResult=-2146233036 Message=The type initializer for ‘MathWorks.MATLAB.NET.Arrays.MWIndexArray’ threw an exception. Source=MWArray TypeName=MathWorks.MATLAB.NET.Arrays.MWIndexArray StackTrace: at MathWorks.MATLAB.NET.Arrays.MWIndexArray..ctor() at MathWorks.MATLAB.NET.Arrays.MWNumericArray..ctor(Double scalar) at MathWorks.MATLAB.NET.Arrays.MWNumericArray.get__Inf() at MathWorks.MATLAB.NET.Arrays.MWNumericArray..cctor() InnerException: System.Security.SecurityException […]

C#Process Start需要带双引号的参数 – 它们会消失

我正在尝试使用Process.Start(ProcessStartInfo)从c#运行cmd行应用程序; 问题是,cmd行应用程序是一个matlab独立的.exe并且具有可选参数,这意味着您可以在cmd行上传递它们: app.exe “optional1” optional1value “optional2″ optional2value 其中optional1value是整数或字符串等。 我们遇到的问题是双引号不是作为“optional1”参数的一部分传递的,所以我相信cmd.exe会得到类似的东西: app.exe optional1 optional1value optional2 optional2value 或类似的东西,matlab的解析器显然会被混淆。 我试过了: @”””optional1″” optional1value “”optional2″ optional2value””” 正如其他一些关于cmd行参数中的双引号的SO问题所建议但它似乎对我没有用,也没有: “\”optional1\” optional1value \”optional2\” optional2value\”” 我写了一个小的c#命令行.exe来打印出它得到的参数。 如果我将命令行参数放在VS Project-> Debug区域并运行它然后用双引号打印它们但由于所有转义等等,当我在代码中执行此操作时,.exe打印参数而不带任何双引号。 我发现这篇文章可能是.NET 3.5的cmd解析器中的一个错误,但似乎找不到可行的解决方案。 有没有人有任何想法? 感谢您的时间, 雨披 PS有没有办法看到使用Process.Start()发送参数时cmd.exe得到了什么? 我让我的进程打开了一个cmd窗口但是很高兴看到cmd.exe行如下所示:“app.exe optional1 optional1value”等。 再次感谢。

将.NET数据表传递给MATLAB

我正在为Matlab组件构建一个接口层,该组件用于分析由我也在构建的单独.NET应用程序维护的数据。 我正在尝试将.NET数据表序列化为数值数组,以传递给MATLAB组件(作为更通用的序列化例程的一部分)。 到目前为止,我已经相当成功地传递了数值数据表,但是在尝试添加数据类型DateTime列时遇到了麻烦。 我到目前为止所做的是将DataTable的值填充到双数组中,因为MATLAB只关心双精度,然后直接转换为MWNumericArray ,它本质上是一个矩阵。 这是当前的代码; else if (sourceType == typeof(DataTable)) { DataTable dtSource = source as DataTable; var rowIdentifiers = new string[dtSource.Rows.Count]; // I know this looks silly but we need the index of each item // in the string array as the actual value in the array as well for (int i = […]

在Matlab中创建共享库(.NET程序集)并在C#中使用它

我使用Application Compiler在Matlab(2014a)中创建了一个.NET程序集,我正在尝试在C#下使用它。 matlab模块只有1个function: function [ val ] = AnalyzePicture( arg1 ) val = 5; end 导出的.NET DLL名为AnalyzePicture.dll并导出Class1(在Matlab应用程序编译器中定义)。 但是,当我尝试初始化它时,我得到一个exception说: The type initializer for ‘MathWorks.MATLAB.NET.Arrays.MWArray’ threw an exception 内部例外说: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) 这是代码 using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using […]

非矩阵数据类型的C#和MATLAB互操作性

我正在编写一个需要调用MATLAB处理例程的C#程序。 我一直在研究MATLAB的COM接口。 不幸的是,就可以交换的数据类型而言,COM接口似乎相当有限。 支持矩阵和字符数组,但似乎不支持使用COM接口在C#和MATLAB之间交换结构数据或单元数组。 例如,在下面的代码中(假设在相应的文件夹中存在名为IM000000的DICOM图像),MATLAB变量’img’和’header’分别是256×256 int16矩阵和struct。 GetWorkspaceData调用适用于’img’,但对’header’返回null,因为’header’是一个结构。 public class MatlabDataBridge { MLApp.MLAppClass matlab; public MatlabDataBridge() { matlab = new MLApp.MLAppClass(); } public void ExchangeData() { matlab.Execute(@”cd ‘F:\Research Data\'”); matlab.Execute(@”img = dicomread(‘IM000000’);”); matlab.Execute(@”header = dicominfo(‘IM000000’);”); matlab.GetWorkspaceData(@”img”, “base”, out theImg); // correctly returns a 2D array matlab.GetWorkspaceData(@”header”, “base”, out theHeader); // fails, theHeader is still null } […]

是否可以在MatLab中使用.NET应用程序?

我觉得在C#中有家,我将设计一个控制台应用程序,它将从Web服务中获取一些数据。 我想让一组科学家使用MatLab中的数据。 实现这一目标的一种方法是将其存储在HDD上的文件中,然后将其内容加载到MatLab中。 但这让我想到了。 是否可以在MatLab中创建一个函数来调用在C#中创建的EXE,以便我的科学朋友可以去: a = GetMeSomeData() 并使用服务的响应填充变量a ? (当然,我会使用我的C#代码格式化数据,因此它适合MatLab的矩阵模型。) 在我开始研究之前,我已经完成了一些谷歌搜索,但我发现的大部分内容都是关于MatLab(2007)的旧版本,并且它说了一些关于创建COM对象的内容。

如何在已编译的.NET程序集中使用Matlab对象?

我有一个基本的Matlab类,我想在C#中实例化。 classdef MyClass properties Value end methods function obj=MyClass(v) obj.Value = v; end function display(obj) disp(obj.Value); end end end 然后将其内置到.DLL文件中,并将其与相关的Matlab命名空间(MathWorks.MATLAB.NET.Arrays,MathWorks.MATLAB.NET.Utility)一起导入C#项目中。 在C#方面,我试图构建这个类的实例化: Untitled2.MLTestClass matlab = new Untitled2.MLTestClass(); MWCharArray input = new MWCharArray(“Initial”); MWArray[] result = matlab.MyClass(1, input); 在最后一行代码的末尾,result.Length = 1,result [0] = null。 我不知何故希望以某种方式获得对新创建的Matlab对象的引用。 我想知道,这甚至可能吗? 如果是,那么如何实现呢? 如果不是,有办法解决吗? (我基本上有一个用C#编写的GUI组件,我不想在Matlab中集成,反过来,反之亦然)。

从C#运行matlab并将参数提供给matlab

我有一个C#程序应该调用Matlab运行一个m文件,因此Matlab程序从文本文件中读取参数,这些参数可能因情况而异。 我想要这样的: Execute(Matlab.exe,”matlabprog.m”,”input_parameters_file.txt”); 如果我知道这个Matlab实例何时终止运行,这对我有好处。