如何在Octave中替换MATLAB函数表和table2array?

时间:2019-10-16 12:36:17

标签: matlab octave

我想在Octave中运行我的MATLAB脚本,但是遇到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 个答案:

答案 0 :(得分:5)

您可以为结构的“列”索引使用类似的语法

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也可能是八度的missing。但是,在该缺少的链接中,您可以找到等效功能的几个附件。

答案 1 :(得分:0)

我邀请您尝试我的Tablicious软件包,该软件包提供了tabledatetime和相关类的与Matlab兼容的Octave实现。

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