我需要在matlab中创建有序交叉。我有父母P1和P2如下:
P1=[1 2 3 4 ; 0 1 1 0],
P2=[3 2 1 4 ; 0 1 0 0].
前1 [在P1(2,2)和P2(2,2)处]是我的交叉点。现在我需要跟随后代:
O1=[1 2 3 4 ; 0 1 0 0],
O2=[3 2 1 4 ; 0 1 0 0].
你能帮帮我吗?最好的,Elnaz
答案 0 :(得分:2)
要查找交叉点,请在父项的第二行使用逻辑AND运算符:
idx = find(P1(2, :) & P2(2, :));
然后我们通过在交叉点之后切换父级之间的值来创建后代:
O1 = [P1(:, 1:idx), P2(:, idx + 1:end)];
O2 = [P2(:, 1:idx), P1(:, idx + 1:end)];
希望这有帮助!