Octave 以表格形式显示单元格

Octave 以表格形式显示单元格,octave,Octave,我想知道是否可以在使用倍频程时以表格形式显示单元格。对我来说,获得牢房的信息会更容易。如果它显示在一列中,我必须一直向下滚动。单元格数组默认显示看起来有点复杂: octave> a = {"foo", "bar", "qux"; "baz", "nof", "zot"} a = { [1,1] = foo [2,1] = baz [1,2] = bar [2,2] = nof [1,3] = qux [2,3] = zot } 最好能看到这样的东西: octav

我想知道是否可以在使用倍频程时以表格形式显示单元格。对我来说,获得牢房的信息会更容易。如果它显示在一列中,我必须一直向下滚动。

单元格数组默认显示看起来有点复杂:

octave> a = {"foo", "bar", "qux"; "baz", "nof", "zot"}
a = 
{
  [1,1] = foo
  [2,1] = baz
  [1,2] = bar
  [2,2] = nof
  [1,3] = qux
  [2,3] = zot
}
最好能看到这样的东西:

octave> a = {"foo", "bar", "qux"; "baz", "nof", "zot"}
a(1:2, 1:3) = 
{
  "foo"    "bar"    "qux"
  "baz"    "nof"    "zot"
}
但是,单元格数组的每个单元格内都可以有任何内容。这包括其他单元格数组、结构和带有换行符的非常长的线。因此,单元格数组的合理显示非常依赖于其内容以及用户感兴趣的内容

这意味着,由用户创建一个显示其所需内容的函数。我将提供一个对上述情况非常有用的示例,这是最常见的情况,即短单行字符串的二维单元格数组。解决方案是根据每列上最长的字符串动态创建printf格式,如下所示:

octave> a = {"foobar", "bar", "qux"; "baz", "nofnot", "zotr"};
octave> col_width = max (cellfun (@numel, a)) +4
col_width =

   10   10    8

octave> row_template= [sprintf("%%%is", col_width) "\n"]
row_template = %10s%10s%8s

octave> printf (row_template, a'{:})
    foobar       bar     qux
       baz    nofnot    zotr
或者在一行上:

octave> printf ([sprintf("%%%is", max (cellfun (@numel, a))+4) "\n"], a'{:})
    foobar       bar     qux
       baz    nofnot    zotr
更复杂的单元阵列,具有更复杂但有组织的结构,可以使用倍频程。例如:

octave> pkg load dataframe
octave> C = {"Patient Name", "Volume", "Quality", "Owner"; "Joe", 200, .95, "MR"; "Dana", 186, .93, "MR"; "Cassidy", 197, .96, "SP"};
octave> dataframe (C)
ans = dataframe with 3 rows and 4 columns
_1 Patient_Name Volume Quality Owner     
Nr         char double  double  char     
 1          Joe    200 0.95000    MR     
 2         Dana    186 0.93000    MR     
 3      Cassidy    197 0.96000    SP     

您可以使用Tablicious包以表格形式显示信息

安装:

pkg install https://github.com/apjanke/octave-tablicious/releases/download/v0.3.5/tablicious-0.3.5.tar.gz;
要回答这个问题:

您可以使用tablicious包中名为cell2table的方法将单元格转换为表

    C =
{
  [1,1] = 1
  [2,1] = 2
  [3,1] = 3
  [4,1] = 4
  [5,1] = 5
  [1,2] = Adam
  [2,2] = Jane
  [3,2] = Amit
  [4,2] = Leena
  [5,2] = Desh
  [1,3] = 23
  [2,3] = 34
  [3,3] = 22
  [4,3] = 45
  [5,3] = 100
  [1,4] = M
  [2,4] = F
  [3,4] = M
  [4,4] = F
  [5,4] = M
}

out = cell2table(C)
prettyprint(out)
输出:

Ԁout =
table: 5 rows x 4 variables
  VariableNames: Var1, Var2, Var3, Var4
------------------------------
| Var1 | Var2  | Var3 | Var4 |
------------------------------
| 1    | Adam  | 23   | M    |
| 2    | Jane  | 34   | F    |
| 3    | Amit  | 22   | M    |
| 4    | Leena | 45   | F    |
| 5    | Desh  | 100  | M    |
------------------------------
>>
官方文件的链接:

感谢您宝贵的回答。现在我需要安装dataframe包,因为1。methode最终非常混乱,但这是一种聪明的思维方式。由于我的服务器无法访问internet,我必须手动安装dataframe。我正在研究,我可以把它转换成数据帧。但在45列中显示时,我得到了以下信息。我可以更改数据帧显示宽度的设置吗?@KenStark宽度通常是终端的宽度。你最好的选择是选择一个寻呼机,并根据你的需要进行配置。但这是另一个问题。