在索引i处创建1的向量最常用的方法是什么?

Cam*_*Cam 3 matlab vector

在Matlab中,假设我想创建一个长度为0的向量L,除了索引为1 i

例如,类似于:

>> mostlyzeros(6, 3)

ans =

     0     0     1     0     0     0
Run Code Online (Sandbox Code Playgroud)

目的是这样我可以将它用作'选择'向量,我将元素与另一个向量相乘.

Gle*_*n O 11

我能想到的最简单的方法是:

a = (1:N)==m;
Run Code Online (Sandbox Code Playgroud)

其中N> = m.话虽如此,如果你想将结果向量用作"选择向量",我不知道你为什么要将两个向量元素相乘,因为我预计它会相对缓慢而且效率低下.如果你想得到一个只包含第m个位置的第v个第m个值的向量,这将是一个更直接的方法:

b = ((1:N)==m)*v(m);
Run Code Online (Sandbox Code Playgroud)

虽然最自然的方法必须是这样的:

b(N)=0;
b(m)=v(m);
Run Code Online (Sandbox Code Playgroud)

假设在此之前未定义b(如果定义了b,则需要使用零而不是仅将Nth值指定为零 - 我的经验是创建一个之前不存在的零向量或矩阵,通过将其最后一个元素指定为零来最容易地完成 - 它对于扩展矩阵或向量也很有用.