对于 matlab 表,查找时间的复杂性是多少?我认为它是 O(n) ,因为它看起来像是在遍历每一个条目。但是,我可以看到它在 O(1) 中运行。任何建议将不胜感激,谢谢!
我们试图加速的代码部分如下。
x = All_InnerAir;
nrow = size(x,1);
T = table(zeros(nrow,1),zeros(nrow,1),'VariableNames',{'CubeSide' 'Direction'});
x = [x T];
for i=1:nrow;
if x{i,7}<320 && x{i,7}>160 % right side = 1 (compare x)
x{i,13} = 1;
elseif x{i,7}>-320 && x{i,7}<-160 % left side = 2
x{i,13} = 2;
elseif x{i,8}<335 && x{i,8}>160 % back side = 3 (compare y)
x{i,13} = 3;
elseif x{i,8}>-335 && x{i,8}<-160 % front side = 4
x{i,13} = 4;
elseif x{i,9}<600 && x{i,9}>160 % top side = 5 (compare z)
x{i,13} = 5;
elseif x{i,9}>-600 && x{i,9}<-160 % bottom side = 6
x{i,13} = 6;
elseif x{i,13} == 0
x{i,13} = 99999; % Error check
end
end
for i=1:nrow;
if x{i,13} == 1 && x{i,4} > 0 % right side (1) away
x{i,14} = -1;
elseif x{i,13} == 1 && x{i,4} < 0 % right side towards center
x{i,14} = 1;
elseif x{i,13} == 2 && x{i,4} > 0 % left side (2) towards center
x{i,14} = 1;
elseif x{i,13} == 2 && x{i,4} < 0 %left side away
x{i,14} = -1;
elseif x{i,13} == 3 && x{i,5} > 0 % back side (3) away
x{i,14} = -1;
elseif x{i,13} == 3 && x{i,5} < 0 % back side towards center
x{i,14} = 1;
elseif x{i,13} == 4 && x{i,5} > 0 % front side (4) towards center
x{i,14} = 1;
elseif x{i,13} == 4 && x{i,5} < 0 % front side away
x{i,14} = -1;
elseif x{i,13} == 5 && x{i,6} > 0 % top side (5) away
x{i,14} = -1;
elseif x{i,13} == 5 && x{i,6} < 0 % top side towards center
x{i,14} = 1;
elseif x{i,13} == 6 && x{i,6} > 0 % bottom side (6) towards center
x{i,14} = 1;
elseif x{i,13} == 6 && x{i,6} < 0 % bottom side away
x{i,14} = -1;
elseif x{i,14} == 0
x{i,14} = 99999; % Error Check
end
end
All_InnerAir = x;