筛选并删除带有交换顺序的多次重复序号的行数(MATLAB)

问题:矩阵的每一行有两个数字,想用MATLAB编一个fun程序,筛选并删除带有交换顺序的多次重复序号的行数。

1 2
3 4
2 1
2 1
5 6
通过function后,第1,3,4行数据重复,删除后只剩下3 4 ;5 6。

以下本人的算例数据,可供使用验证代码的性能,删除重复数据后,矩阵大概有42行。
49 21
21 48
48 49
46 1
1 6
6 46
46 4
4 3
3 46
46 3
3 2
2 46
44 35
35 34
34 44
44 43
43 35
35 44
6 5
5 4
4 6
47 7
7 45
45 47
7 6
6 1
1 7
47 10
10 9
9 47
47 11
11 10
10 47
47 9
9 8
8 47
21 20
20 18
18 21
48 16
16 15
15 48
50 22
22 21
21 50
42 14
14 13
13 42
48 42
42 12
12 48
20 19
19 18
18 20
21 17
17 16
16 21
21 18
18 17
17 21
49 12
12 47
47 49
38 37
37 30
30 38
41 27
27 26
26 41
45 7
7 38
38 45
50 23
23 22
22 50
45 24
24 23
23 45
41 25
25 24
24 41
45 27
27 41
41 45
45 28
28 27
27 45
45 30
30 29
29 45
43 31
31 37
37 43
43 37
37 36
36 43
37 31
31 30
30 37
44 33
33 32
32 44
40 38
38 1
1 40
45 38
38 30
30 45
38 7
7 1
1 38
40 39
39 38
38 40
41 26
26 25
25 41
45 41
41 24
24 45
42 13
13 12
12 42
48 14
14 42
42 48
43 36
36 35
35 43
43 32
32 31
31 43
44 34
34 33
33 44
44 32
32 43
43 44
45 29
29 28
28 45
50 47
47 45
45 50
46 2
2 1
1 46
46 6
6 4
4 46
47 8
8 7
7 47
47 12
12 11
11 47
48 15
15 14
14 48
48 21
21 16
16 48
49 48
48 12
12 49
50 21
21 49
49 50
50 49
49 47
47 50
50 45
45 23
23 50

我的解答思路和尝试过的方法

img

望采纳!!!点击回答右侧采纳即可!!
我看了你的题目和数据,我觉得可以使用MATLAB中的unique函数来实现这个需求。unique函数能够自动检测并删除重复项
思路:
首先,将矩阵中的两个数字按任意顺序排列,并将其转换为字符串。
然后,使用unique函数来删除重复的字符串。
最后,将字符串转换回原来的数字格式,并将结果输出。

function output = remove_duplicates(input)
    %将矩阵中的两个数字按任意顺序排列,并将其转换为字符串
    str_input = strcat(num2str(input(:,1)), num2str(input(:,2)));
    %使用unique函数来删除重复的字符串
    str_output = unique(str_input);
    %将字符串转换回原来的数字格式
num_output = str2num(str_output);
%将结果输出
output = reshape(num_output, [], 2);
end

%使用示例数据进行测试
input_matrix = [49 21;21 48;48 49;46 1;1 6;6 46;46 4;4 3;3 46;46 3;3 2;2 46;44 35;35 34;34 44;44 43;43 35;35 44;6 5;5 4;4 6;47 7;7 45;45 47;7 6;6 1;1 7;47 10;10 9;9 47;47 11;11 10;10 47;47 9;9 8;8 47;21 20;20 18;18 21;48 16;16 15;15 48;50 22;22 21;21 50;42 14;14 13;13 42;48 42;42 12;12 48;20 19;19 18;18 20;21 17;17 16;16 21;21 18;18 17;17 21;49 12;12 47;47 49;38 37;37 30;30 38;41 27;27 26;26 41;45 7;7 38;38 45;50 23;23 22;22 50;45 24;24 23;23 45;41 25;25 24;24 41;45 27;27 41;41 45;45 28;28 27;27 45;45 30;30 29;29 45;43 31;31 37;37 43;43 37;37 36;36 43;37 31;31 30;30 37;44 33;33 32;32 44;40 38;38 1;1 40;45 38;38 30;30 45;38 7;7 1;1 38;40 39;39 38;38 40;41 26;26 25;25 41;45 41;41 24;24 45;42 13;13 12;12 42;48 14;14 42;42 48;43 36;36 35;35 43;43 32;32 31;31 43;44 34;34 33;33 44;44 32;32 43;43 44;45 29;29 28;28 45;50 47;47 45;45 50;46 2;2 1;1 46;46 6;6 4;4 46;47 8;8 7;7 47;47 12;12 11;11 47;48 15;15 14;14 48;48 21;21 16;16 48;49 48;48 12;12 49;50 21;21 49;49 50;50 49;49 47;47 50;50 45;45 23;23 50];
output_matrix = remove_duplicates(input_matrix);
disp(output_matrix)


B2=[1 2
    3 4
    2 1
    6 1
    2 1
    4 3];


`for i =1:size(B2,1)
    a1=B2(i,1);b1=B2(i,2);
    for k = i+1:size(B2,1)
        a2=B2(k,1);b2=B2(k,2);
        if a1==b2&&b1==a2
            B2(k,1)=0;B2(k,2)=0;
        end
    end
end
%将不符合条件的数据删除
B2(all(B2 == 0,2),:) = [];