Matlab7.5之后,支持生成.NET类型的组件,供C#等语言调用。
我现在使用matlab 2009b和VS2008,下面说下的具体操作
----------
1.设置好matlab2009b的编译器之后,把写的.m文件通过deploytool--。net assembly转成test.dll文件
2.在VS2008的c#里面,调用test.dll
2.1 添加引用--test.dll和matlab相关的dll
2.2 读取excel文件里的数据
3. 运行程序,计算,得到的结果不对,最终结果全是nan(C#里面是不是没有nan)
下面是具体的代码
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {            MWArray ma = 1;
            MWArray mb = 2;
            add.addd addd=new addd();//这里的add类,里面有个addd函数(最简单的加法计算,用来测试)
            MWArray mr= addd.add(ma, mb);//计算1+2=3---通过
         Workbook wba = Workbook.getWorkbook(@"C:\Documents and Settings\win\My Documents\MATLAB\jd\aa.xls");//读取excel表a
            
            int row_a = wba.Sheets[0].Rows;
            int col_a = wba.Sheets[0].Columns;
            double[,] data_a = new double[row_a, col_a];            Workbook wbb= Workbook.getWorkbook(@"C:\Documents and Settings\win\My Documents\MATLAB\jd\b.xls")]; //读取excel表b            int row_b = wbb.Sheets[0].Rows;
            int col_b = wbb.Sheets[0].Columns;
            double[,] data_b = new double[row_b, col_b;            for (int irow = 0; irow < row_a; irow++)
            {
                for (int icol = 0; icol < col_a; icol++)
                {
                    Cell cella = wba.Sheets[0].getCell(icol, irow);
                    data_a[irow, icol] = (double) cella.Value;
                }            }//把excel表a里的所有数据放在data_a二维数组里
            MWNumericArray mw_a = data_a;
            for (int irow = 0; irow < row_b; irow++)
            {
                for (int icol = 0; icol < col_b; icol++)
                {
                    Cell cellb = wbb.Sheets[0].getCell(icol, irow);
                    data_b[irow, icol] = (double)cellb.Value;
                }
            }//把excel表b里的所有数据放在data_b二维数组里
            MWNumericArray mw_b = data_b;
            MWArray mwArray_a = mw_a;
            MWArray mwArray_b = mw_b;//把二维数组的数据转换成matlab与c#之间接口要求的数据类型MWArray            int[] a1 = mwArray_a.Dimensions;
            int[] b1 = mwArray_b.Dimensions;
            jdd.jdd2 jd2=new jdd2();//声明我在jdd类里的实例
             //到这里所有的过程和结果还跟想的是一样的!
           MWArray r=  jd2.dlltest(mwArray_a, mwArray_b);//dltest是里面的一个函数,调用完返回值全是NaN,
           //C#没有Nan吧,在matlab里面nan是说不是一个数值,或者无穷大。
           //我想请问各位高手问题出哪里了?有没有办法单步执行去看看调用dlltest的过程?去看看问题出哪里了的??
//或者有什么好的建议来检查错误,谢谢           
                                }
    }
}