2014-02-13 3 views
0

Я новичок в MATLAB и смущен тем, как получать числовые массивы из массивов ячеек. Согласно MATLAB, у меня есть матрица result и я получаю следующее:преобразование матрицы 2d ячеек в 2d числовую матрицу

>> size(result) 
ans = 
    1 15 

>> result 
ans = 
    Columns 1 through 15 
    [3] [15] [1x2 double] [13] ... \\ Omitted for clarity 

>> iscell(result) 
ans = 
    1 

Так что, похоже, как результат представляет собой массив 2-D ячейка размером 1 х 15, но есть и суб-массив (?) в нем, указанном [1x2 double]. В этом конкретном примере предположим, что есть только один из этих элементов [1x2 double]. Другими словами, result состоит из четырнадцати одноэлементных столбцов и одного многоэлементного столбца.

Я проверил документацию и согласно this page существует метод под названием cell2mat. К сожалению, это не совсем то, что мне нужно, потому что он выводит 1x16 числовой массив:

>> cell2mat(result) 
ans = 
    3 15 10 7 13 ... \\ Omitted for clarity 

В этом примере, 10 и 7 были элементы, составлявшие [1x2 double], это просто, что MATLAB по какой-то причине Ждут» t указывает, что при печати массива ячеек.

Вопрос: Есть ли способ преобразовать эту матрицу в числовой массив массивов при сохранении группировки? В частности, я надеюсь получить что-то вроде формы [[3], [15], [10, 7], [13], ...] и их значения будут числовые. Это возможно? Для чего это стоит, я использую MATLAB с некоторым кодом Java из matlabcontrol, и для этого программного обеспечения требуются массивы массивов с вещественными значениями.

ответ

1

В Matlab нет массивов массивов «java-type». У вас могут быть собственные ячейки памяти Matlab массивов массивов, и это то, что у вас есть прямо сейчас. Также нет «прямого» перевода массивов ячеек в Matlab на Java-структуры данных (отметьте here для получения дополнительной информации о переводе данных Matlab в java).

Быстро я вижу три возможных пути вы могли бы рассмотреть:

  1. Преобразование results в строку представления массива, передать эту строку в Java, а затем преобразовать его обратно к тому, что когда-либо структуре, которую вы хотите.
  2. Поскольку ячейки переходят в java как массив объектов (т. Е. Object[]), вы можете работать с этими массивами в java, чтобы превратить их в то, что вы хотите.
  3. Вы также можете создавать java-структуры непосредственно в matlab, то есть перед передачей их в ваш java-класс/метод. Таким образом, вы можете преобразовать ячейку results в некоторый массив java (например, массив массивов java) или что угодно. Это возможно, потому что в Matlab вы можете использовать java-код и java-структуры данных. Проверьте here за дополнительной информацией об использовании java в matlab.
Смежные вопросы