Как заменить таблицу функций MATLAB и table2array в Octave? - PullRequest
2 голосов
/ 16 октября 2019

Я хочу запустить свой скрипт MATLAB в Octave, но у меня есть проблемы с функцией table, которой еще нет в Octave.

Извлечение таблицы, с которой я хочу работать, выглядит следующим образом:

Rotation angle  Measured distance
-0,342  0,000
-1,440  0,000
-10,422 0,000
-11,574 0,000
-21,060 0,000
-21,528 0,000
-30,402 0,000

Для создания выходной переменной я использую следующий код в MATLAB.

data = table;
data.Rotationangle = cell2mat(raw(:, 1));
data.Measureddistance = cell2mat(raw(:, 2));

В Octave я получаю следующую ошибку:

warning: the 'table' function is not yet implemented in Octave

Please read <https://www.octave.org/missing.html> to learn how you can
contribute missing functionality.
error: 'table' undefined near line 102 column 8
error: called from
    Cloud_reconstruction at line 102 column 6

Мой вопрос сейчас, есть ли возможность заменить табличную функцию в Octave? Я пытался найти решение с пакетом Octave data frame, но не смог.

В этом же сценарии я также использую функцию table2array, которая также еще не реализована в Octave и позже также будет возникать ошибка.

data = table2array(data); 

Я был бы рад, если быкто-то может помочь мне с этим.

Ответы [ 2 ]

5 голосов
/ 16 октября 2019

Вы можете использовать подобный синтаксис для индексации "столбца" со структурой

data = struct;
data.var1 = [1;2;3;4];
data.var2 = [5;6;7;8];

Однако вы потеряете много табличных операций, доступных в MATLAB.

Если вы 'Получив вышеуказанные данные, вы можете использовать struct2array вместо table2array для преобразования в матрицу

data = struct2array( data );

Если вы все равно используете table2array, вы получите матрицу,так почему бы просто не придерживаться матрицы в первую очередь? Если все ваши данные являются числовыми, они, как правило, будут работать быстрее.

data = [cell2mat(raw(:,1)), cell2mat(raw(:,2))];

Редактировать: кажется, struct2array также может быть отсутствует из Octave. Однако в этой недостающей ссылке вы можете найти несколько вложений для эквивалентных функций.

0 голосов
/ 05 ноября 2019

Я приглашаю вас попробовать мой пакет Tablicious, который предоставляет Matlab-совместимую реализацию Octave table, datetime и связанные с ней классы.

https://github.com/apjanke/octave-tablicious

...