1. 程式人生 > >Matlab高階教程_第二篇:關於MATLAB轉C#過程中遇到輸出兩組引數的問題

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]:為第二個序列