我有长度(C)变量数。每个指标代表单一类型的变量(在我的优化模型中),例如:发电量、输电线路容量等。
但是,我有一个逻辑向量,其长度与C(所有变量)相同,表示它是否为例如生成:
% length(genoidx)=length(C), i.e. the number of variables
genoidx = [1 1 1 1 1 1 0 0 ... 1 1 1 1 1 1 0 0]在这种情况下,有6个发电机分2个时间步骤,共计12个变量。
我想给每个变量命名,以便更好地了解优化模型f.ex的输出。就像这样:
% This is only a try on pseudo coding
varname = cell(length(C),1)
varname(genoidx) = 'geno' (1 2 3 4 5 6 ... 1 2 3 4 5 6)
varname(lineidx) = 'line' (... 对于如何根据逻辑ID向量将C中的变量命名为字符串和数字,有什么建议吗?
谢谢!
发布于 2015-10-06 10:22:54
使用动态名称可能可以在工作区中看到计算结果,但是如果有任何代码要读取它们,我就不会使用它们。
您可以使用转让人(‘base’)函数来完成这个任务。
我不太确定您的伪代码正在尝试做什么,但是您可以这样做:
>> varname={'aaa','bbb','ccc','ddd'}
varname =
'aaa' 'bbb' 'ccc' 'ddd'
>> genoidx=logical([1,0,1,1])
genoidx =
1 0 1 1
>> assignin('base', sprintf('%s_',varname{genoidx}), 22)它将在工作区中创建变量aaa_ccc_ddd_并将数字22分配给它。
或者,您可以使用如下表达式:
sum(genoidx.*(length(genoidx):-1:1))要计算十进制值和索引定制名称的单元格数组,请执行以下操作:
>> varname={'aaa','bbb','ccc','ddd','eee','fff','ggg','hhh'}
varname =
'aaa' 'bbb' 'ccc' 'ddd' 'eee' 'fff' 'ggg' 'hhh'
>> assignin('base', varname{sum(genoidx.*(length(genoidx):-1:1))}, 33)它将创建变量ggg并将33赋值给它。
https://stackoverflow.com/questions/32924752
复制相似问题