【发布时间】:2023-03-25 03:14:01
【问题描述】:
我刚刚开始探索矢量化的世界。我得到了一维矢量化,但我在矢量化以下代码时遇到了问题。如果可能的话,我想至少取消一个 for 循环 b/c 我计划在更大的数据集上使用它进行多次迭代,因此节省计算时间至关重要。
CityPairs = [7 3
3 1
3 1
1 7
7 1
3 4
5 1
4 6];
Offices = [1;3;7];
nOffices = size(Offices,1);
connection = zeros(nOffices);
for i = 1:nOffices
for j = 1:nOffices
connection(i,j) = sum(Offices(i) == CityPairs(:,1)...
& CityPairs(:,2) == Offices(j));
end
end
disp(connection)
在本例中,有 7 个城市,其中 3 个设有办事处。我想要一个有办公室的城市的成对矩阵来捕获每个城市之间所有单向连接的总和。上述问题的答案应该是:
0 0 1
2 0 0
1 1 0
欢迎提出任何建议。提前致谢。
基思
【问题讨论】:
-
connection(i,:) = connection(i,:);有什么原因吗?否则删除该行。 -
它是我所做的其他事情的一部分,在这里不重要 - 我已将其删除。
-
那么你想要另一个答案还是你的问题解决了?
-
问题已解决。我只是在 6 小时后才能发布自己的答案。感谢您提供替代解决方案 - 我稍后会检查它们并为那些正常工作的解决方案表示赞赏。
标签: matlab vectorization