Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据已经存在的逻辑ID向量(MATLAB)为每个变量命名_Matlab_Boolean_Naming - Fatal编程技术网

根据已经存在的逻辑ID向量(MATLAB)为每个变量命名

根据已经存在的逻辑ID向量(MATLAB)为每个变量命名,matlab,boolean,naming,Matlab,Boolean,Naming,我有很多变量。在我的优化模型中,每个指标都代表一个单一类型的变量,例如,是否为发电量、输电线路容量等 但是,我有一个与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] 在这种情况下,在2个时间步中有6个生成器,总计12个变量 我想命名每个变量,以便更好地了解优化模型f.ex的

我有很多变量。在我的优化模型中,每个指标都代表一个单一类型的变量,例如,是否为发电量、输电线路容量等

但是,我有一个与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]
在这种情况下,在2个时间步中有6个生成器,总计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中的变量,有什么建议吗


谢谢

在工作区中查看计算结果时,使用动态名称可能还可以,但如果有代码要读取它们,我就不会使用它们

您可以使用assignin'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_u,并为其分配数字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。

否。您不需要这些变量。这是使用动态变量名调用的,这是错误的。非常糟糕。只需将所有内容存储在矩阵或单元格数组中。这比糟糕还要糟糕,这是邪恶的。谢谢,埃里克!是的,这样做的目的是在不可行的情况下更容易评估优化问题。当你有成千上万的变量和约束时,对它们所代表的东西有一些想法是很好的。嗨,马丁,我的答案足够好,可以标记为答案吗?我认为这有助于我的个人资料/分数等。谢谢。