getvariables.m

来自「求解线性矩阵不等式简单方便--与LMI工具箱相比」· M 代码 · 共 42 行

M
42
字号
function used = getvariables(F)

used = recursivegetvariables(F,1,length(F.clauses));
return

m = length(F.clauses);
if m == 1
    used = getvariables(F.clauses{1}.data);
else
    if m>50
        for i = 1:m
            Fivars = getvariables(F.clauses{i}.data);
            used = [used Fivars(:)'];
        end
        used = uniquestripped(used);
    else
        for i = 1:m
            Fivars = getvariables(F.clauses{i}.data);
            used = uniquestripped([used Fivars(:)']);
        end
    end
end


function used = recursivegetvariables(F,startindex,endindex)

if endindex-startindex>50
    newstart = startindex;
    mid = ceil((startindex + endindex)/2);
    newend = endindex;
    used1 = recursivegetvariables(F,newstart,mid);
    used2 = recursivegetvariables(F,mid+1,newend);
    used = uniquestripped([used1 used2]);
else
    used = [];
    for i = startindex:endindex
        Fivars = getvariables(F.clauses{i}.data);
        used = [used Fivars(:)'];
    end
    used = uniquestripped(used); 
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?