Getting MATLAB Numeric Arrays from a Component

I am trying to create a dll for the following code for dotnetbuilder and use the same in C#.NET.
function out = Fourier(x, n)
x_mat = cell2mat(x);
out = fft(x_mat,n);
The name of dll is "FourierTransform.dll". My C#.NET code is give below using System; using System.Collections.Generic; using System.Text;
using FourierTransform; using MathWorks.MATLAB.NET.Arrays; using MathWorks.MATLAB.NET.Utility;
namespace DLL { class Program { static void Main(string[] args) { ClassFFT obj = new ClassFFT();
MWCellArray input = null;
MWNumericArray result = null;
input = new MWCellArray(1, 3);
input[1] = new MWNumericArray(1);
input[2] = new MWNumericArray(1);
input[3] = new MWNumericArray(1);
result = (MWNumericArray)obj.FourierTransform(1, input, 1);
Double[] doubleArray = (Double[])result.ToVector(MWArrayComponent.Real);
Console.WriteLine(doubleArray);
Console.ReadKey();
}
}
}
The Visual studio gets crashed when the above code is run. Please help me if anybody knows why it is crashed...
Thanks, Srikanth

 採用された回答

Titus Edelhofer
Titus Edelhofer 2012 年 1 月 13 日

1 投票

Hi Srikanth, you are nearly done. Some slight changes: although you have only one output argument, the method will return an array. Unfortunately you can't cast that array directly but with the following changes it works:
MWArray[] result = null;
...
result = (MWArray[])obj.Fourier(1, input, 1);
MWNumericArray result1 = (MWNumericArray) result[0];
Double[] doubleArray = (Double[]) result1.ToVector(MWArrayComponent.Real);
The last two lines may be combined of course, the intermediate variable result1 is just for better reading.
Titus

1 件のコメント

Srikanth
Srikanth 2012 年 1 月 13 日
Hello Titus,
Thank you very much! It worked well.
Thanks,
Srikanth

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by