当其中一个表包含一列OptimizationVariable对象时,我使用innerjoin
遇到错误:
% A normal table
tLeft = table([1;2],[3;4],'VariableNames',{'v1' 'v2'})
% A table with a column of `optimvar` objects
tRight = table( [1;2] , optimvar('myvar',2,1) , ...
'VariableNames',{'v1' 'ov2'})
% `join` works
tJoin = join(tLeft,tRight,'Key','v1')
showexpr(tJoin.ov2)
% myvar(1)
% myvar(2)
% `innerjoin` yields error assigning to optimvar object
tJoin = innerjoin(tLeft,tRight)
% Work-around
tJoin = innerjoin(tLeft,tRight,'RightVar',{})
tJoin = join( tJoin , tRight , 'RightVar','ov2' )
showexpr(tJoin.ov2)
% myvar(1)
% myvar(2)
innerjoin
后面的表包含OptimizationVariable列是否存在根本的概念上的缺陷,或者这仅仅是Matlab新的高级优化工作流程中的痛处?
答案 0 :(得分:1)
OptimizationVariable
不能使用,但是OptimizationExpression
可以使用。这提供了另一种解决方法:使用表达式而不是变量创建tRight
:
tRight = table( [1;2] , 1*optimvar('myvar',2,1) , ...
'VariableNames',{'v1' 'ov2'})