例如,给定i=5和n=8,我想生成[0;0;0;0;1;0;0;0].具体来说,我想生成向量,v以便:
v = zeros(n,1);
v(i) = 1;
Run Code Online (Sandbox Code Playgroud)
是否有(合理的)方法在一行中完成此操作?
top*_*hef 14
另一种方案:
I = eye(n);
v = I(:, i);
Run Code Online (Sandbox Code Playgroud)
实际上,你可以有一个y从1到n的数字向量,并为每个元素得到这样的向量:
v = I(:, y);
Run Code Online (Sandbox Code Playgroud)
您可以在我的博客文章中查看有关此常规解决方案的详细信息.
这是另一种解决方案,sparse用于创建n长度为i第1位的行矢量:
v = sparse(1,i,1,1,n)
Run Code Online (Sandbox Code Playgroud)
优点是,对于大型n,这也是内存有效的,并且可以像往常一样用于矩阵计算.如果您需要完整的矢量,请使用full.