【问题标题】:Display values in matlab table if variable has more than 3 elements如果变量的元素超过 3 个,则在 matlab 表中显示值
【发布时间】:2015-07-21 00:05:09
【问题描述】:

我在 Matlab 中的 table 输出有问题。我确定这是一件小事,但谷歌没有给我任何答案,Matlab 也没有帮助。

一旦变量的向量大小大于3,输出将不会显示实际值。使用 Matlab 帮助示例,会发生以下情况:

变量 BloodPressue = 3 中的元素,表 T 的输出产生: T =

            Age    Height    Weight      **BloodPressure**  
            ___    ______    ______    _________________

Smith       38     71        176       124     93      1
Johnson     43     69        163       109     77      1
Williams    38     64        131       125     83      1
Jones       40     67        133       117     75      1
Brown       49     64        119       122     80      1

变量 BloodPressue = 4(或更大)中的元素,表 T 的输出产生: T =

            Age    Height    Weight    **BloodPressure**
            ___    ______    ______    _____________

Smith       38     71        176       [1x4 double] 
Johnson     43     69        163       [1x4 double] 
Williams    38     64        131       [1x4 double] 
Jones       40     67        133       [1x4 double] 
Brown       49     64        119       [1x4 double] 

如何在 Matlab 工作区的表格中查看 BloodPressure 的值?

希望得到一些帮助?

非常感谢!

【问题讨论】:

    标签: matlab-table


    【解决方案1】:

    您可以使用变量查看器。

    例子:

    A = table(magic(5))
    
    A = 
    
        Var1    
    ____________
    
    [1x5 double]
    [1x5 double]
    [1x5 double]
    [1x5 double]
    [1x5 double]
    

    现在您可以在工作区中双击A

    这将打开以下查看器,向您显示表格的内容:

    【讨论】:

      【解决方案2】:

      如果您的问题只是在处理数据时查看数据,上述答案将对您有所帮助。如果您想操作实际输出,即打印时表格的外观等,请查看此链接:

      http://www.mathworks.com/help/matlab/ref/uitable-properties.html

      因此,您可以尝试使列标题更宽或调整列宽以匹配您的数据。

      【讨论】:

      • 我正在使用该表来总结优化问题的输入和输出。因此,我发现表格格式非常有用。
      • 我不认为问题出在列宽上,因为显示 3 个血压值是没有问题的,每个值的长度都为 9,例如123456789 123456789 123456789 - 它都将进入血压列。只有在 BloodPressure 列中添加第四个(或更多)元素才会给我输出 [1x4 double]
      • 嗯,我现在无法测试更长的值的输出,因为 MATLAB 在另一台计算机上,所以我稍后会看一下。但是你想达到什么目的?如果真的只是在工作区中查看变量的内容,那么 m.s.'答案就是你所需要的。
      • 它是关于比较值,假设您在一张表中有不同的起始条件和迭代次数以及最佳值(这样我就可以一次比较它们)。
      • @bayleaf 好的,我无法复制您的表格,因为我只有 R2012b 并且它是在 R2013b 中引入的...,但此链接可能对您有所帮助:blogs.mathworks.com/loren/2013/09/10/… 通过访问您的不同属性表有并显示那些你应该能够看到你的完整条目,不管有多少。希望这会有所帮助。
      【解决方案3】:

      就我而言,当我发现一个 hack 时,我解决了我的问题:

      给定数组:

      num2str(Comp_Matrix(3,:)','%12.10f')
      
      ans =
      
      0.1297092395
      0.1507424182
      0.1586286637
      0.1587259832
      0.2880978647
      0.4785836471
      0.4786843575
      0.8680238040
      

      使用我得到的表:

      table(num2str(Comp_Matrix(3,:)','%12.10f'))
      
      ans = 
      
             Var1    
          ___________
      
          [1x12 char]
          [1x12 char]
          [1x12 char]
          [1x12 char]
          [1x12 char]
          [1x12 char]
          [1x12 char]
          [1x12 char]
      

      嗯,你知道这是个问题。当然我可以打电话给table(Comp_Matrix(3,:)') - 它会显示实际数字,但我需要格式化输出! 所以我尝试了很多东西,当我使用cellstr 时,神奇的事情发生了:

      table(cellstr(num2str(Comp_Matrix(3,:)','%12.10f')))
      
      ans = 
      
               Var1     
          ______________
      
          '0.1297092395'
          '0.1507424182'
          '0.1586286637'
          '0.1587259832'
          '0.2880978647'
          '0.4785836471'
          '0.4786843575'
          '0.8680238040'
      

      它仍然不漂亮,但至少是可读的。 您也可以通过这种方式将列分配给表:

      TheTable = table();
      TheTable.Hack =  cellstr(num2str([1 2 3 5; 4 5 6 5],'%1.2f '))
      
                  Hack         
          _____________________
      
          '1.00 2.00 3.00 5.00'
          '4.00 5.00 6.00 5.00'
      

      如果有人知道如何显示不带 '' 引号的长数字 - 请也告诉我们!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-08-05
        • 1970-01-01
        • 1970-01-01
        • 2022-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多