【问题标题】:Getting the Original Variable Name from a Concatenated Matrix [MATLAB]从级联矩阵中获取原始变量名称 [MATLAB]
【发布时间】:2015-10-17 07:03:19
【问题描述】:

我正在做一个个人项目,但我有点碰壁了。我制作了许多变量,它们的值构成一个 1x5 向量。最终,我想用这些变量制作一个矩阵(所以如果我放 13 个这些变量,最终矩阵将是 13x5)。那部分不是问题。

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

这是一个例子:

Bob = [5 9]

Joe = [6 0]

Sue = [5 6]

Mary = [6 1]

Bill = [4 8]

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

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

另外需要注意的是,我使用的所有变量都有一个唯一的向量值,因此它可以用特定的值来具体表示。

【问题讨论】:

    标签: matlab


    【解决方案1】:

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

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

    查看文档了解更多信息:http://uk.mathworks.com/help/matlab/matlab_prog/create-a-table.html

    【讨论】:

      【解决方案2】:

      您可以将数据表示为结构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'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-19
        • 2021-05-15
        • 1970-01-01
        相关资源
        最近更新 更多