首页 > 解决方案 > OptimizationVariable 对象数组的紧凑字符串表示?

问题描述

OptimizationVariable 对象数组的紧凑字符串表示?

在 Matlab 2019a 中,我有一个表,其中一列IFpvfd是一个OptimizationVariable数组:

myTable = table( [1:3]' , ...
                 optimvar( 'IFpvfd' , 3 , 1 , 'Type','integer' , ...
                           'LowerBound',0 , 'UpperBound',1 ) , ...
                 'VariableNames' , {'RowNbr' 'IFpvfd'} )

   myTable = 3×2 table
       RowNbr                   IFpvfd                   
       ______ ___________________________________________
         1    [1x1 optim.problemdef.OptimizationVariable]
         2    [1x1 optim.problemdef.OptimizationVariable]
         3    [1x1 optim.problemdef.OptimizationVariable]

showvar( myTable.IFpvfd )

   [ IFpvfd(1) ]
   [ IFpvfd(2) ]
   [ IFpvfd(3) ]

我想添加一列,以字符串数组或字符数组元胞数组的形式IFpvfd2显示更具可读性:OptimizationVariable

RowNbr                   IFpvfd                    IFpvfd2
______ ___________________________________________ _________
  1    [1x1 optim.problemdef.OptimizationVariable] IFpvfd(1)
  2    [1x1 optim.problemdef.OptimizationVariable] IFpvfd(2)
  3    [1x1 optim.problemdef.OptimizationVariable] IFpvfd(3)

我希望有一个功能可以使用arrayfun

myTable.IFpvfd2 = arrayfun( @SomeFunc , myTable.IFpvfd )

对于SomeFunc,我不认为我可以使用基于的匿名函数,sprintf因为格式化字符串只接受原始数据:

@(x) sprintf( 'Some Formatting String' , x )

我不能使用showvaror writevar,因为它们在不提供返回参数的情况下将输出发送到控制台和文本文件。

标签: matlab

解决方案


推荐阅读