从级联矩阵中获取原始变量名称[MATLAB]

时间:2015-10-17 07:03:19

标签: matlab

我正在从事个人项目,而且我有点碰壁了。我制作了许多变量,这些变量的值为1x5向量。最后,我想用这些变量建立一个矩阵(所以如果我把这些变量中的13个,那么结束矩阵将是13x5)。那部分不是问题所在。

我遇到的问题是我希望用户能够根据相应的值查看矩阵中的各个变量。

以下是一个例子:

Bob = [5 9]

Joe = [6 0]

Sue = [5 6]

Mary = [6 1]

Bill = [4 8]

Names = [Bob;Joe;Sue;Mary;Bill]

名称是一个5x2矩阵,其中包含每个变量的VALUES。我想要的是一些方法来反转这个过程,某种方式能够从Names矩阵中获取原始变量名称。如果可能的话,我想更进一步,如果我输入Names(1,:),我会得到"Bob"而不是[5 9]

进一步说明,我使用的所有变量都有一个唯一的向量值,因此可以用特定的值来具体表示。

2 个答案:

答案 0 :(得分:0)

您可以将数据表示为结构s,然后使用cell2mat(struct2cell(s))获取其矩阵表示,并使用fieldnames(s)获取名称。例如:

s.Bob = [5 9];
s.Joe = [6 0];
s.Sue = [5 6];
s.Mary = [6 1];
s.Bill = [4 8];
fNames = fieldnames(s);
Names = cell2mat(struct2cell(s))

结果:

Names =

     5     9
     6     0
     5     6
     6     1
     4     8

打字:

fNames(1,:)

结果:

ans = 

    'Bob'

打字:

fNames(3,:)

结果:

ans = 

    'Sue'

答案 1 :(得分:0)

如果您使用的是最新版本的MATLAB,则可以使用table来执行此操作。你需要列向量,如下所示:

Bob = Bob';
Joe = Joe';
...
table(Bob, Joe...)

有关详情,请参阅文档:http://uk.mathworks.com/help/matlab/matlab_prog/create-a-table.html