📄 expandforindex.m
字号:
function [oldvariable,sqrList] = expandforindex(sqrList,candidates,nonconvindex);
%EXPANDFORINDEX Internal function for organizing nonlinear variables
% Author Johan L鰂berg
% $Id: expandforindex.m,v 1.4 2004/08/06 09:02:52 johanl Exp $
% Expand the incoming variables
if 1
z = sqrList(:,1);
x1_list = find(z==candidates(2));
if candidates(2)==candidates(1)
x2_list = x1_list;
else
x2_list = find(z==candidates(1));
end
temp = [];
if isempty(x1_list)
temp = candidates(2);
else
temp = sqrList(x1_list,2:end);
end
if isempty(x2_list)
temp = [temp candidates(1)];
else
temp = [temp sqrList(x2_list,2:end)];
end
temp = sort(temp(find(any(temp,1))));
oldsqrList = sqrList;
if length(temp)>size(sqrList,2)-1
% This one cannot already exist
index = [];
%sqrList = [sqrList zeros(size(sqrList,1),1+size(sqrList,2)-length(temp));nonconvindex temp(end:-1:1)];
sqrList = [sqrList zeros(size(sqrList,1),1+length(temp)-size(sqrList,2));nonconvindex temp(end:-1:1)];
else
% sqrList = [sqrList;nonconvindex temp(end:-1:1) zeros(1,size(sqrList,2)-length(temp)-1)];
% searchfor = sqrList(end,2:end);
searchfor = [temp(end:-1:1) zeros(1,size(sqrList,2)-length(temp)-1)];
searchin = sqrList(:,2:end);
% Simple Hash
key = sum(searchfor);
tbl = sum(searchin,2);
possible = find(tbl==key);
index = findrows(searchin(possible,:),searchfor);
if isempty(index)
sqrList = [sqrList;nonconvindex temp(end:-1:1) zeros(1,size(sqrList,2)-length(temp)-1)];
else
index = possible(index);
end
end
%searchfor = sqrList(end,2:end);
%index = findrows(sqrList(1:end-1,2:end),searchfor);
if length(index)>1
index
end
if ~isempty(index)
oldvariable = sqrList(index,1);
sqrList = oldsqrList;
else
oldvariable = [];
end
else
% Expand the list to begin with
if isempty(sqrList)
sqrList = [nonconvindex candidates];
else
sqrList = [sqrList; nonconvindex candidates(2) candidates(1) zeros(1,size(sqrList,2)-3)];
end
bottom = size(sqrList,1);
%%FIXz = sqrList(1:bottom,1);
z = sqrList(:,1);
x1_list = find(z==candidates(2));
if candidates(2)==candidates(1)
x2_list = x1_list;
else
x2_list = find(z==candidates(1));
end
temp = [];
if isempty(x1_list)
temp = sqrList(bottom,2);
else
temp = sqrList(x1_list,2:end);
end
if isempty(x2_list)
temp = [temp sqrList(bottom,3)];
else
temp = [temp sqrList(x2_list,2:end)];
end
temp = sort(temp(find(any(temp,1))));
sqrList(bottom,2:2+length(temp)-1)=temp(end:-1:1);%fliplr(sort(temp));
bottom = bottom+1;
searchfor = sqrList(end,2:end);
index = findrows(sqrList(1:end-1,2:end),searchfor);
if ~isempty(index)
oldvariable = sqrList(index,1);
sqrList = sqrList(1:end-1,:);
else
oldvariable = [];
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -