- 必要的检查
- 检查m代码内是否含有内置函数,如fft,fsolve,fmincon之类
- 检查m代码的是否使用的cell
- 检查m代码的向量和矩阵变量是否进行了初始化
-
矩阵的翻译方法
向量翻译为一维数组,matlab的向量下标是从1开始,而C#是从0开始,笔者的做法是将C#数组的第1个元素和matlab向量的第一个元素对应,C#的第0个元素留空,值设为0。C#数组在初始化的时候,增加一个元素。
即matlab的
a = zeros(m,1)
,C#翻译为double[] a = new double[m+1]
,matlab访问a的第i个元素为a(i)
,C#访问第i个元素为a[i]
.这种翻译方法的好处是不需要对大量的下表进行改动,翻译不容易出现错误。
-
循环的翻译方法 matlab的for循环为
for i = 1:10 end
C#可以翻译为
for(i=1;i<=10,i++) { }
这种翻译方法的好处是,C#代码不需要对i循环减1,同样避免了出错。
-
常量翻译
C#中的double常量结尾要加.0或者d,如果不加,运输会出错。 如matlab里
a = 1
,C#要翻译为double a = 1.0
或者double a = 1d
matlab里,
a = 1/2+sin(1/3*pi)
C#里要翻译为
double a = 1.0/2.0 +Math.Sin(1.0/3.0 *Math.Pi)