MATLAB: Getting MATLAB Numeric Arrays from a Component

dotnetbuilderfftMATLAB Builder NEmwcellarraymwnumericarray

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

Best Answer

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