matlab - 创建索引为 1 的向量的最惯用方法是什么?

标签 matlab vector

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

例如,像这样的东西:

>> mostlyzeros(6, 3)

ans =

     0     0     1     0     0     0

目的是我可以将它用作“选择”向量,我将按元素与另一个向量相乘。

最佳答案

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

a = (1:N)==m;

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

b = ((1:N)==m)*v(m);

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

b(N)=0;
b(m)=v(m);

假设 b 在此之前没有定义(如果 b 被定义,你需要使用零而不是仅仅将第 N 个值指定为零——我的经验是创建一个不存在的零向量或矩阵在此之前最容易通过将它的最后一个元素分配为零来完成 - 它对于扩展矩阵或向量也很有用)。

关于matlab - 创建索引为 1 的向量的最惯用方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15467359/

相关文章:

matlab - 最近邻插值在 MATLAB 中如何工作?

Matlab mcc 警告 "Adding path ... to Compiler path instance"

database - Matlab数据库准备语句和绑定(bind)变量

c++ - 使用单独编译时返回 typedef 类型

c++ - 删除 vector 指针

python - 使用 NumPy 进行 Procrustes 分析?

matlab - 计算字符串出现次数并绘制直方图

c++ - 尝试调用将数据添加到 vector 的函数时出错

C++ vector 计算每个元素的出现次数

c++ - 基于另一个 vector c++中相似性的 vector 的条件平均