Coping array from matlab to C#/.NET array
5 次查看(过去 30 天)
显示 更早的评论
I have a dll from C# that i'm interfacing with. It has a structure that contains an array that I need to put data into.
This sets up the two arrays, in my actual problem the "destination" variable is in a structure but it shouldn't matter in this example.
MatArray = [1:10];
MatArray = int32(MatArray);
destination = NET.createArray('System.Int32', 10);
This can be copied item by item but for any decent size array this takes a long time.
% slow
for j = 1:numel(MatArray)
destination(j) = MatArray(j);
end
A faster way but a bit ulgy is to make a temp jaggered array then copy the data using a System.Array.Copy. This will also use up unnecessary memory, which may become an issue for very large arrays.
% fast but ulgy
temp = NET.createArray('System.Int32[]', 10);
temp(1) = MatArray;
System.Array.Copy(temp(1),destination,10);
Is there a better way to copy data from a matlab array into a c# array?
0 个评论
回答(1 个)
Animesh
2023-8-31
I understand that you want to copy a matlab array to a C# array using MATLAB or C#.
You can try to use the ToArray method provided by the MATLAB int32 array to convert it to a regular C# array, and then assign it directly to the C# array.
Here is an example of how you can achieve this using C#:
// Assuming you have a C# array called "destination" and a MATLAB int32 array called "MatArray"
// Convert the MATLAB array to a C# array using the ToArray method
int[] temp = MatArray.ToArray();
// Copy the data from the temp array to the destination array
Array.Copy(temp, destination, temp.Length);
By using the ToArray method, you can directly convert the MATLAB array to a C# array without the need for intermediate steps or temporary arrays.
To read more about ToArray, please refer to the following documentation :- https://www.mathworks.com/help/dotnetbuilder/MWArrayAPI/html/M_MathWorks_MATLAB_NET_Arrays_MWArray_ToArray.htm
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 .NET Client Programming 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!