0

对于 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;
4

0 回答 0