matlab - matlab中的“对称”行检测
问题描述
我有 A (nA x c)
偶数列(例如mod(c,2) = 0
)和唯一行的整数矩阵。如何有效地(通过速度和内存优化功能symmetricRows
)找到矩阵的“对称”行A
和iA1
,iA2
其中“对称”行iA1
和iA2
定义为:
all(A(iA1,1:end/2) == A(iA2,end/2+1:end) & A(iA1,end/2+1:end) == A(iA2,1:end/2),2) = true
例子 ():
A = [1 1 1 1;
2 2 2 2;
1 2 3 4;
4 3 2 1;
2 2 3 3;
3 4 1 2;
3 3 2 2]
[iA1, iA2] = symmetricRows(A)
iA1 =
1
2
3
5
iA2 =
1
2
6
7
矩阵的典型大小A
:nA ~ 1e4 to 1e6
,c ~ 60 to 120
该问题是由大型数据集的预处理引起的,其中“对称”行与用户定义的距离度量点无关。
示例2:准备更大的测试数据集可以使用此功能然后,例如:
N = 10;
A = allcomb([1:N],[1:N],[1:N],[1:N]);
iA = symmetricRows(A)
解决方案
如果您有统计工具箱:
d = ~pdist2(A(:,1:end/2), A(:,end/2+1:end));
[iA1, iA2] = find(triu(d & d.'));
推荐阅读
- visual-studio - Visual Studio 签入链接文件的副本 (TFVC)
- c# - 无法加载文件或程序集 Microsoft.AspNetCore.Http.Abstractions,版本 = 5.0.0.0,
- sql - Oracle中根据id生成重复行
- python - Json split python 大文件内存问题
- windows-10 - Windows 10:可以重置键盘布局吗?
- apache-spark - Apache Spark SQL 无法选择 Cassandra 时间戳列
- memory - .NET - 进程的最大可能内存分配大小?
- python - NLP-我们如何在神经网络中输入 FastText 的输出
- airflow - airflow create sub process based on number of files
- flutter - 搜索列表时,gridview builder中的空容器占用空间