Использование массивов с приложениями.NET

Передайте массивы MATLAB.NET

MATLAB® автоматически преобразует массивы в типы.NET, как описано в Таблице преобразования Типа примитива MATLAB. Чтобы передать массив символьных массивов, создайте массив ячеек. Для всех других типов используйте MATLAB NET.createArray функция.

MATLAB создает массив.NET, копирует элементы от массива MATLAB до массива.NET и передает его C#.

Преобразуйте примитивные массивы.NET в массивы MATLAB

Чтобы использовать массив.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 с одним индексом (линейная индексация) как вы может в 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

Необходимо преобразовать зубчатый массив.NET перед использованием его в команде MATLAB.

  • Если форма массива является прямоугольной, используйте соответствующую числовую функцию MATLAB.

  • Если массив не является прямоугольным, используйте cell функция.

Если зубчатый массив многомерен, необходимо индивидуально преобразовать массивы в каждой размерности.

Смотрите также

|

Похожие темы