C#和Matlab混合编程数据类型转换_学习笔记1

来源:转载

C#和Matlab混合编程数据类型转换_学习笔记1,有需要的朋友可以参考下。

学习视频下载地址:国内第一部C#.Net调用Matlab混合编程视频教程

该博客博主也有许多其他关于C#和Matlab混合编程的资料,大家可以去看看其他博文。

我现在贴出自己的视频第3集的学习笔记。大家可以参照注释部分理解程序,以及C#和matlab数据转换。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using MathWorks.MATLAB.NET.Arrays;using MathWorks.MATLAB.NET.Utility;namespace Test{ class Program {static void Main(string[] args){//混合编程传递参数测试//1、假设M函数已经写好,并且编译完成。//传递参数之前要搞清楚什么问题?//要传递的参数实际类型:N=5,或者double[]//MWArray,怎么把.NET中的数据传给MWArray//要传递数值类型:double,Int,byte…MWArray m1 = 5;int N = 5;MWArray m2 = N;MWArray ch = "my name is matlab.net";//以上均可以隐式转换。//假设m函数需要一个数组。//MWArray m3 = new int[] { 1, 2, 3, 4 };错误。无法将数组隐式转换。//MWArray m3 =(MWArray)new int[] {1,2,3,4};错误。任然无法进行转换。//数组到MWArray不能强制转换或者隐式准换。//正确方法为:MWNumericArray n1 = new int[] { 1, 2, 3, 4 };//.net数值类型数组可以隐式转换为MWNumericArray//因为MWNumericArray为MWArray子类型,所以设想是否可以再将MWNumericArray赋值给MWArray?MWArray n2 = n1; //面向对象的基础。父子之间的关系。//正确。//上述两句可以合并为下面一句。MWArray n3 = (MWNumericArray)new int[] { 1, 2, 3, 4 };//n3等价于n2。//如果要把一个多维数组传递进去怎么做?//MWArray n4 = (MWArray)new int[,] { { 1, 2 }, { 4, 6 } };错误。MWArray n4 = (MWNumericArray )new int[,] { { 1, 2 }, { 4, 6 } };//正确。//上面是直接赋值的方法,.net可以隐式转换或者MWNumericArray转换到MWArray。//下面是其他方法转换到MWArray。MWNumericArray mm1 = new MWNumericArray(2, 3, new double[] { 1, 2, 3, 4, 5, 6 });//2行3列的数组。注意:MWNumericArray没有dimension属性,所以要查看维数可以转换为MWArray类型。//MWNumericArray类型比MWArray类型的属性更加详细。里面细分了是否为Int、float、double等。//MWArray属性里仅有 是否为MWNumericArray型。//或者转化为字符串打印出来:Console.WriteLine(mm1.ToString());//Console.ReadKey();MWNumericArray mm2 = new MWNumericArray(2, 3, new int [] { 1, 2, 3, 4, 5, 6 });//思考题:此处的mm2定义中,虽然传入的是int[],但是为什么在属性中isinteger为false,而isdouble却为true?//如果一定要定义一个类型为integer的MWNumericArray,该怎么办? //自己想了好久,目前还想不出。} }}
关于matlab生成com组件,可以参照我的前一篇博文:【C#与Matlab混合编程:使用Matlab DeployTool生成.Net组件】过程中遇到的问题以及解决。

版权声明:本文为博主原创文章,未经博主允许不得转载。



分享给朋友:
您可能感兴趣的文章:
随机阅读: