我刚开始使用Matlab,我花了一天的时间尝试让Matlab与我的C#应用程序交互。目前,我可以使用MLapp接口发送命令,如下所示:
MLApp.MLApp matlab = new MLApp.MLApp();
我的问题是,当我尝试执行一个命令来保存数据时:
string result = matlab.Execute(inputVectorCommand);
matlab.Execute("save('saveTest.mat','x')");
我得到以下错误:
Error using save
Unable to
我有一个用matlab编写的函数,例如加/减两个矩阵A和B(A和B都是二维矩阵):
function [X, Y] = add(A, B)
X = A + B;
Y = A - B;
我在C#中工作,我想从visual调用这个函数,并在C#中使用这个函数的输出。所以我把MLApp.dll添加到我的参考资料中
MLApp.MLApp matlab = new MLApp.MLApp();
matlab.Execute(@"cd D:\Matlab");
object result = null;
matlab.Feval("add", 2, out result
我有matlab脚本textcreator.m,创建一些结果文件output.txt。 并且有一些matlab.aplication()引用将matlab函数“翻译”成c#,并且一些代码很难转换成c#,所以我决定只运行我编写的脚本。 using System;
using System.Collections.Generic;
using System.Text;
MLApp.MLApp matlab = new MLApp.MLApp();
matlab.Execute(@"cd d:\textcreator.m"); 如何运行matlab脚本textcreato
如何用C#使用/启动编译成exe文件的MATLAB文件?我已经创建了一个三维图形在MATLAB,我想要执行在C#。有可能吗?
我找到的这个C#代码:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
// Create the MATLAB instance
我想在我的C#项目中调用matlab函数。下面是我的matlab函数:
function [A,B] = estiamteBetaDistAlpha(mu,sigmasq)
syms x
a = sprintf('x*((x/%f)-x) = %f *(x+1+((x/%f)-x))*((x+((x/%f)-x))^2)^2 ',mu,sigmasq,mu,mu);
aa = double(solve (a));
sel = find(aa>0);
pot= aa(sel);
B = pot(1) * (1/mu - 1);
A = pot(1);
它解决了
C#应用程序试图在Matlab中对数据进行整形。在Matlab中,我需要在matlab实例中显示三维数据.(代码假定matlab实例正在运行。)
public void PassAndResizeInMatlab()
{
MLApp.MLApp matlab = (MLApp.MLApp)Marshal.GetActiveObject("Matlab.Desktop.Application");
matlab.Execute("enableservice('AutomationServer',true);");
var d
似乎不可能多次调用matlab:
[STAThread]
static void Main(string[] args)
{
IList<DTO> LotsOfWork = new List<DTO>();
// create some work
for(int c = 0; c < 10; c++)
{
LotsOfWork.Add(new DTO(){ Id = c, Parameter1 = c, Parameter2 = c });
}
// deal with work
foreach (
我试图使用c#中的指令从调用Matlab函数。
该方法和Matlab网站中的例子进行得很好,但现在试图通过编写一个独立的类来调用Matlab函数,并在主类中调用该方法,并给出参数值以获得结果。
这样做时,会出现重用变量的错误。
下面是调用Matlab函数的类。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace fromMatlab
{
public class Class1
{
我为我在matlab中创建的神经网络做了一个函数。我可以在c#中成功地加载函数,但我不知道如何输入矩阵作为数组不能工作的输入。
原始Matlab函数
function energy = simCW(x)
%x is a 4xQ matrix (I always sim 4x1 though)
S = load('CW100', 'CB_CW100');
CB_CW100 = S.CB_CW100;
energy = sim(CB_CW100,x')';
end
Matlab用于生成C#函数
genFunction(CB_CW100, '
我有一个非常简单的matlab函数:
function [x,y] = myfunc(a,b,myStruct)
x = a + b + myStruct.score;
y = sprintf('Hello %s',myStruct.name);
然后,我试图通过以下操作从c#调用它:
class Program
{
static void Main(string[] args)
{
MLApp.MLApp matlab = new MLApp.MLApp();
matlab.Execute(@"c:\matlab&
我是VB的新手,所以如果这是一个简单的问题,请原谅。
我将在一个程序中运行多个耗时的(单线程)进程(允许通过COM实现自动化)。为了节省时间,我想打开这个程序的两个或多个实例,并同时运行它们。但我试图在程序上做的任何事情,都会发生在第一个打开的程序上。这就是我的意图,我的意图是打开程序的两个实例(它可以正确地工作),并在每个实例中打开一个新文档(它所做的是在myProcess0中打开两个新文档,在myProcess1中不打开任何文档。注意:我激活了System.Diagnostics命名空间。
Using myProcess0 As Process = Process.Start(pr
在C#中运行,但由于我是C#的新手,我想打印System.Array prresult = new double[4];的结果。下面是使用MATLAB的C#代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1{
class Class1{
[STAThread]
static void Main(string[] args){
MLApp.MLAppClass matlab =
我正在编写一个C#程序,它需要调用MATLAB处理例程。我一直在研究MATLAB的COM接口。不幸的是,就可交换的数据类型而言,COM接口似乎相当有限。支持矩阵和字符数组,但似乎不支持使用COM接口在C#和MATLAB之间交换结构数据或单元数组。例如,在下面的代码中(假设在适当的文件夹中存在一个名为IM000000的DICOM图像),MATLAB变量'img‘和’int16‘分别是一个256x256的标头矩阵和一个结构。GetWorkspaceData调用对于'img‘运行良好,但是对于'header’返回null,因为'header‘是一个结构。
public
Matlab提供了支持远程执行任意函数(和代码片段)的COM接口。特别是,它有一个调用给定Matlab函数的Feval方法。此方法的第三个参数pvarArgOut具有COM类型变量*,并作为类型的参数出现在Visual F#编辑器中:
pvarArgOut: byref<obj>
下面的代码调用interp1,它在Matlab中返回一个矩阵(即2D双数组)结果,这对于大多数Matlab函数来说都是正常的。
let matlab = new MLApp.MLAppClass()
let vector_to_array2d (v : vector) = Array2D.init v.