Matlab高级教程_第二篇:关于MATLAB转C#过程中遇到输出两组参数的问题

1. 在matlab的m函数很可能遇到原函数[a,b] = func(a);

这样的两个输出参数。

2. 在观察C#生成后定义中我们发现:

public MWArray HP();
public MWArray HP(MWArray Y);
public MWArray HP(MWArray Y, MWArray smoothing);
public MWArray[] HP(int numArgsOut);
public MWArray[] HP(int numArgsOut, MWArray Y);
public MWArray[] HP(int numArgsOut, MWArray Y, MWArray smoothing);
public void HP(int numArgsOut, ref MWArray[] argsOut, MWArray[] argsIn);
public void WaitForFiguresToDie();
protected virtual void Dispose(bool disposing);

3. 这个地方表示有几个输出参数,如果numArgsOut为2的话为2个输出参数。因此在C#调用中可以这样调用。

MWArray array = (MWNumericArray)new double[] {50140, 50140, 50110, 50130, 50170, 50200, 50160, 50130, 50130, 50120};
MWArray smoothing = 1600;
HPFilter.HPFilter demo = new HPFilter.HPFilter();
//其中对应的2位置为几个输出参数
MWArray[] result = demo.HP(2,array, smoothing);
MWNumericArray Trend = (MWNumericArray)result[0];
MWNumericArray Cycle = (MWNumericArray)result[1];
Console.WriteLine("趋势分析的结果如下:");
Console.WriteLine(Trend);
Console.WriteLine("周期分析的结果如下:");
Console.WriteLine(Cycle);

根据上一篇的知识:MWNumericArray为MWArray的子类。因此我们输出的是MWArray的父类,因此我们要用子类的函数把这两个子类调用出来

result[0]:为第一个序列

result[1]:为第二个序列

 

posted @ 2018-11-02 04:15  时海涛|Thomas  阅读(1207)  评论(0编辑  收藏  举报