【发布时间】:2012-09-21 10:34:46
【问题描述】:
我需要在 MATLAB 中创建具有以下要求的矩阵。给定一个向量v,比如[1,2,2,1,3,5,1],我需要形成一个矩阵:
[1 0 0 1 0 0 1;
0 1 1 0 0 0 0;
0 0 0 0 1 0 0;
0 0 0 0 0 0 0;
0 0 0 0 0 1 0]
即矩阵的ith 列在v[i] 行仅包含一个非零元素(单个1)。如何避免循环并以有效的方式做到这一点?
【问题讨论】:
-
这并不能回答问题,但以防万一您没有意识到:跨输出矩阵列的单个循环(这使得解决问题变得微不足道)应该几乎同样有效如果您只使用一个 CPU,作为完全矢量化的解决方案,并且如果您有多个 CPU,它仍然会表现得非常好。一个很好的解释为什么是here