3

我需要在 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].

你能帮我么?最好的,埃尔纳兹

4

1 回答 1

2

要找到交叉点,请在父项的第二行使用逻辑 AND 运算符:

idx = find(P1(2, :) & P2(2, :));

然后我们通过在交叉点之后在父母之间切换值来创建后代:

O1 = [P1(:, 1:idx), P2(:, idx + 1:end)];
O2 = [P2(:, 1:idx), P1(:, idx + 1:end)];

希望这可以帮助!

于 2013-04-30T14:58:49.453 回答