matlab - Bin交互频率
问题描述
我有 10 个箱子,每个箱子都包含特定数量的观察结果,例如:
a = [0,0,1,0,0,2,0,0,0,2]
我想随后根据观察的数量计算任何给定的(非零)bin 对同时出现的次数。
给定上面的例子bin#3 = 1
,bin#6 = 2
和bin#10 = 2
。
这意味着 bin 3 和 6 共出现一次, bin 3 和 10 共出现一次, bin 6 和 10 共出现两次(取该对的最小值)。
我想要的输出是一个完整的矩阵,列出了所有可能的 bin 组合(第 1-2 列)和观察到的总数(第 3 列):
1 2 0
1 3 0
1 4 0
1 5 0
1 6 0
1 7 0
1 8 0
1 9 0
1 10 0
2 3 0
2 4 0
2 5 0
2 6 0
2 7 0
2 8 0
2 9 0
2 10 0
3 4 0
3 5 0
3 6 1
3 7 0
3 8 0
3 9 0
3 10 1
4 5 0
4 6 0
4 7 0
4 8 0
4 9 0
4 10 0
5 6 0
5 7 0
5 8 0
5 9 0
5 10 0
6 7 0
6 8 0
6 9 0
6 10 2
7 8 0
7 9 0
7 10 0
8 9 0
8 10 0
9 10 0
有没有一种简短和/或快速的方法来做到这一点?
解决方案
尝试这个。
bin_output = [....];
bin_matrix = [0,0,1,0,0,2,0,0,0,2];
bin_nonzero = find(bin_matrix);
for j = 1:length(bin_nonzero);
if isequal(j,length(bin_nonzero))
break;
end
for k = (j+1):(length(bin_nonzero))
for m = 1:length(bin_output)
if isequal(bin_output(m,1),j) && isequal(bin_output(m,2),k)
bin_output(m,3) = bin_output(m,3) + min([bin_matrix(1,bin_nonzero(1,j)),bin_matrix(1,bin_nonzero(1,k))]);
end
end
end
end
推荐阅读
- php - AWS PHP SDK 仅适用于 Cognito 服务
- r - 如何在 R Shiny 应用程序中显示整个数据表?
- mysql - 为什么要在数据库中存储文件名和上传路径?
- python - 用 BeautifulSoup 解析 td 元素
- java - 方法检查给定输入文件的值 [java]
- javascript - 如何在 Thymeleaf 和 Spring Boot 中进行复杂的表单设计(ZK 经验丰富的用户)
- vba - 如何将类名作为参数传递?
- wordpress - 如何将新按钮添加到古腾堡编辑工具栏
- java - RestFB如何订阅微博
- objective-c - 多个调度组导致崩溃