在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值指定为零 - 我的经验是创建一个之前不存在的零向量或矩阵,通过将其最后一个元素指定为零来最容易地完成 - 它对于扩展矩阵或向量也很有用.