有没有办法在验证某个元素值后将元素插入到数组中?例如,拿
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/