findreplace.m

来自「基于Wolf方法计算Lyapunov指数」· M 代码 · 共 30 行

M
30 行
字号
function P=findreplace(Y,P1,P2,MaxL)
%   寻找替代点
P=P2;
YL=length(Y);
HYL=fix(YL/2);
k=1;
%   优先选择距离较小的,与被替代的点处于以基点为原点的坐标下相同象限中
for i=1:YL
    if (sum(abs(Y(P1,:)-Y(i,:))) < MaxL ...
        && sign(Y(P2,1)-Y(P1,1))==sign(Y(i,1)-Y(P1,1))...
        && sign(Y(P2,2)-Y(P1,2))==sign(Y(i,2)-Y(P1,2))...
        && sign(Y(P2,3)-Y(P1,3))==sign(Y(i,3)-Y(P1,3)))
       temp(k)=i;
       k=k+1;
    end
end
%   如没有满足上述条件的点不进行替代,否则取尽可能保持方向不变的点
%   此处采用取外积模最小的点
if k>1
    P=temp(1);
    PCross=norm(cross(Y(P1,:),Y(P,:)));
    for i=2:k-1
        PCross1=norm(cross(Y(P1,:),Y(temp(i),:)));
        if PCross1 < PCross
            P=temp(i);
            PCross=PCross1;
        end
    end
end

⌨️ 快捷键说明

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