MATLAB® автоматически преобразует массивы в типы.NET, как описано в Таблице преобразования Типа примитива MATLAB. Чтобы передать массив символьных массивов, создайте массив ячеек. Для всех других типов используйте MATLAB NET.createArray
функция.
MATLAB создает массив.NET, копирует элементы от массива MATLAB до массива.NET и передает его C#.
Чтобы использовать массив.NET в MATLAB, вызовите соответствующую функцию преобразования MATLAB как показано в Преобразовании массивов Примитивного Типа.NET к Типу MATLAB. Например, предположите, что метод.NET возвращает netArr
из типа System.Int32[]
:
netArr = Int32[] with properties: Length: 5 LongLength: 5 Rank: 1 SyncRoot: [1×1 System.Int32[]] IsReadOnly: 0 IsFixedSize: 1 IsSynchronized: 0
Преобразуйте массив в массив MATLAB int32
.
B = int32(netArr)
B = 1×5 int32 row vector 1 2 3 4 5
Объедините элементы в B
с массивом MATLAB.
A = int32([11 12 13 14 15]); A + B
ans = 1×5 int32 row vector 12 14 16 18 20
Вы получаете доступ к элементам массива.NET с индексами, точно так же, как с массивами MATLAB.
Вы не можете обратиться к элементам многомерного массива.NET с одним индексом (линейная индексация) как вы может в MATLAB, как описано в Индексации массива. Необходимо задать индекс для каждой размерности массива.NET.
Можно только использовать скалярную индексацию, чтобы получить доступ к элементам массива.NET. Оператор двоеточия, описанный в Создании, конкатенации и расширении матрицы, не поддерживается.
В качестве альтернативы можно получить доступ к элементам массива.NET с помощью Set
и Get
функции экземпляра. При использовании Set
или Get
необходимо использовать индексацию массива C#, которая основана на нуле.
Например, создайте два System.String
массивы, с помощью Set
функциональное и прямое присвоение:
d1 = NET.createArray('System.String',3); d1.Set(0, 'one'); d1.Set(1, 'two'); d1.Set(2, 'three'); d2 = NET.createArray('System.String',3); d2(1) = 'one'; d2(2) = 'two'; d2(3) = 'zero';
Чтобы сравнить значения первых элементов в каждом массиве, введите:
System.String.Compare(d1(1),d2.Get(0))
MATLAB отображает 0
, значение строк равно.
Необходимо преобразовать зубчатый массив.NET перед использованием его в команде MATLAB.
Если форма массива является прямоугольной, используйте соответствующую числовую функцию MATLAB.
Если массив не является прямоугольным, используйте cell
функция.
Если зубчатый массив многомерен, необходимо индивидуально преобразовать массивы в каждой размерности.