Matlab转置表向量

时间:2014-07-25 02:30:24

标签: matlab vector transpose

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

为了将列向量aTable简单地转换为行向量,我尝试了标准语法:

aTableT = aTable.';

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

aTableT = rot90(aTable);

根据Mathworks,最后一个应该适用于表数组,请参阅here。但是,我收到此错误代码:

  
    

使用表/置换时出错(第396行)     未定义的功能' permute'输入参数类型'表'。

         

rot90错误(第29行)        B =置换(B,[2 1 3:ndims(A)]);

  

注意:fliplr也不是很有用。我很确定我已经涵盖了明显的角度 - 任何想法? 谢谢!

2 个答案:

答案 0 :(得分:2)

尝试将表格转换为数组,转置该数组,然后转换回表格。换句话说,尝试这样做:

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

我也阅读了rot90的文档,它说rot90肯定适用于表,我得到的错误与你相同。因此,由于转置显然适用于数组/矩阵,所以让我们通过转换为矩阵,转置矩阵然后转换回表格来快速解决问题。这对我有用!

答案 1 :(得分:1)

我使用其他一些方法扩展了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