首页 > 解决方案 > 如何在 Octave 中替换 MATLAB 函数 table 和 table2array?

问题描述

我想在 Octave 中运行我的 MATLAB 脚本,但在 Octavetable中尚不存在的函数存在问题。

我要使用的表的摘录如下所示:

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 中的表格功能?我试图用 Octavedata frame包找到解决方案,但并没有真正做到。

在同一个脚本中,我还使用了table2array在 Octave 中还没有实现的函数,稍后也会出现错误。

data = table2array(data); 

如果有人可以帮助我,我会很高兴。

标签: matlaboctave

解决方案


您可以将类似的语法用于带有结构的“列”索引

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中丢失。但是,在那个缺失的链接中,您可以找到几个等效功能的附件。


推荐阅读