arrays - matlab:在元素之后插入元素?

标签 arrays matlab insert indexing

有没有办法在验证某个元素值后将元素插入到数组中?例如,拿

A = [0 0 1 1 0 1 0] 

在数组中的每一个1之后,我想再插入一个1得到

Anew = [0 0 1 1 1 1 0 1 1 0] 

但是我想要一种方法来针对一般情况对此进行编码(任何长度的 1 行数组,并且这些数组可以按任何顺序排列)。

最佳答案

A = [0 0 1 1 0 1 1];

i = (A == 1);  % Test for number you want insert after
t = cumsum(i);              
idx = [1 (2:numel(A)) + t(1:end-1)];

newSize = numel(A) + sum(i);
N = ones(newSize,1)*5;             % Make this number you want to insert

N(idx) = A

输出:

N =

     0     0     1     5     1     5     0     1     5     0

我将插入的数字 5 分成多行,以便很容易看出发生了什么。

如果你想循环执行(这就是我在现实生活中这样做的方式,没有人会看到我炫耀)

A = [0 0 1 1 0 1 0];

idx = (A == 1);  % Test for number you want insert after
N = zeros(1, numel(A) + sum(idx));
j = 1;
for i = 1:numel(A)
    N(j) = A(i);
    if idx(i)
        j = j+1;
        N(j) = 5;       % Test for number you want to insert after
    end
    j = j+1;
end

N

输出:

N =

 0     0     1     5     1     5     0     1     5     0

关于arrays - matlab:在元素之后插入元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792934/

相关文章:

MySQL 批量插入(忽略主键 ID,但重复更新另一个键)

javascript - 是否可以在 C 上实现延迟(非严格)数组?

arrays - 在Matlab中压缩一些单例维度

matlab - 在 MATLAB 中绘图后恢复轴

sql - 我可以使用来自两个连接表的数据编写插入查询吗?

sql - 在 sql 数据库 vb.net 中插入数据未被存储

arrays - hive explode 导致不均匀的值

ios - 在 Swift 中向数组添加一个元素

arrays - 不同大小数组的匹配索引

c++ - openCV 2.4.10 bwlabel - 连通分量