MatFileHandler icon indicating copy to clipboard operation
MatFileHandler copied to clipboard

Converting jagged arrays to 2-dim IArray

Open mgirardis opened this issue 11 months ago • 0 comments

I couldn't find a MatFileHandler native way to handle conversion of 2-dimensional jagged arrays into an IArray representing a MATLAB matrix, so I coded this simple extension method that could be added/enhanced/adapted to native MatFileHandler.

It can also be adapted for inputs of type T[,]

public static class MyExtensionMethods
{
    public static IArrayOf<T> NewArray<T>(this DataBuilder matDataBuilder, T[][] data, params int[] dimensions)
             where T : struct
        {
            var array = matDataBuilder.NewArray<T>(dimensions);
            var m = data.Length;
            var n = data[0].Length; // assuming the jagged array represents a 2d matrix; it could be checked though
            for (var i = 0; i < m; i++)
            {
                for (var j = 0; j < n; j++)
                {
                    array[j * m + i] = data[i][j];
                }
            }
            return array;
        }
}

mgirardis avatar Mar 19 '24 17:03 mgirardis