Matlab如何转置一个表格向量

6

看起来是一个非常简单的问题,但是我该如何转置 Matlab 表向量呢?

对于将列向量 aTable 转置为行向量,我尝试了标准语法:

aTableT = aTable.';

aTableT = reshape(aTable, 1, height(aTable));

并且

aTableT = rot90(aTable);

根据Mathworks的说法,最后一个应该适用于表格数组,请参见此处。然而,我得到了这个错误代码:

使用table/permute(第396行)时出错 未定义函数“ permute”,输入参数类型为“ table”。

在rot90(第29行)中出错 B = permute(B,[2 1 3:ndims(A)]);

注意:fliplr也没有用。我很确定已经涵盖了明显的角度 - 有什么想法吗? 谢谢!
2个回答

3

尝试将您的表格转换为数组,对其进行转置,然后再转换回表格。换句话说,尝试执行以下操作:

aTableArray = table2array(aTable);
aTableT = array2table(aTableArray.');

我也阅读了关于 rot90 的文档,它确实应该适用于表格,但我和你一样遇到了相同的错误。因此既然转置在数组/矩阵中显然是可行的,那么让我们通过将表格转换为矩阵,对其进行转置,然后再将其转换回表格来快速解决问题。这种方法对我奏效了!


2
rot90 在2014a版本中可用,但我不确定结果是否符合预期,它更像是 flip - Robert Seifert
2
这是最糟糕的错误类型,即在文档未更改的情况下更改代码。我在Matlab中发现了一些这样的错误。有时候,当代码用Matlab编写时,我会深入挖掘代码,并发现已经明确删除了记录的行为 :(. - patrik
@thewaywewalk - 好奇。我在这个测试中使用了2014a版本,也遇到了OP所提到的“permute”错误。真是不一致啊! - rayryeng
@rayryeng 如果第二个输入不是90的倍数,我就会收到错误。 - Robert Seifert
@thewaywewalk - 有趣。这可能是我第一次在MATLAB中看到这种类型的错误。考虑到它是授权软件并且有很多投资者,你会认为这样的问题会被解决。 - rayryeng

2
我使用一些额外的方法扩展了table()类,并修复了https://github.com/okomarov/tableutils中存在的一些问题。

针对这个问题,我定义了一个矩阵表格的转置,即如果表格每个单元格都有一个值,并且所有变量(列)都是相同的类,则可以使用我的软件包来转置表格。

一个例子:

t = array2table(magic(4))
t = 
    Var1    Var2    Var3    Var4
    ____    ____    ____    ____
    16       2       3      13  
     5      11      10       8  
     9       7       6      12  
     4      14      15       1  
>> t'
ans = 
            Row1    Row2    Row3    Row4
            ____    ____    ____    ____
    Var1    16       5       9       4  
    Var2     2      11       7      14  
    Var3     3      10       6      15  
    Var4    13       8      12       1  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接