Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 将数组嵌入到另一个数组中_Matlab_Vectorization - Fatal编程技术网

Matlab 将数组嵌入到另一个数组中

Matlab 将数组嵌入到另一个数组中,matlab,vectorization,Matlab,Vectorization,我有两个数组。第一个是连续的,如: seq1 = 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 ...continues 第二个是: seq2 = 2 250 3 260 5 267 6 270 8 280 10 290 13 300 18 310 20 320 21 330 ...continu

我有两个数组。第一个是连续的,如:

  seq1 =

 1     0
 2     0
 3     0
 4     0
 5     0
 6     0
 7     0
 8     0
 9     0
10     0 
...continues
第二个是:

  seq2 =

 2   250
 3   260
 5   267
 6   270
 8   280
10   290
13   300
18   310
20   320
21   330 
...continues
我需要将seq2嵌入到seq1中,以这样的方式结束序列:

  seq3 =

 1     0
 2   250
 3   260
 4   260
 5   267
 6   270
 7   270
 8   280
 9   280
10   290
11   290
... continues

我可以用循环来实现这一点,但是数组非常大,所以我不想用两个来实现循环,这需要花费太长的时间。如何以矢量化的方式执行此操作?

我认为这符合您的要求:

[~, jj, vv] = find(sum(bsxfun(@le, seq2(:,1), seq1(:,1).'), 1));
seq3 = seq1;
seq3(jj,2) = seq2(vv,2);
工作原理
通过计算seq2第一列中有多少值小于或等于第一列或seq1代码中的每个值,即可获得所需索引sumbsxfun@le1.这将用于从seq2的第二列中选择适当的条目,并将其写入结果。但在此之前,需要放弃此索引中的值0。这是使用三个输出版本的find code[~,jj,vv]=find…

完成的。如果第二列数据总是在增加,您可以使用和轻松解决此问题:

以下是您从示例输入中获得的信息:

seq3 =

     1     0
     2   250
     3   260
     4   260
     5   267
     6   270
     7   270
     8   280
     9   280
    10   290
    11   290
    12   290
    13   300
    14   300
    15   300
    16   300
    17   300
    18   310
    19   310
    20   320
    21   330
它是如何工作的。。。 连接seq1和seq2后,accumarray收集第二列中与第一列中的值相同的所有值,即值2的[0 250],然后获取每组的值。然后,使用函数cummax将以前的非零值填充任何零值。最后,将索引列添加到新序列中

seq3 =

     1     0
     2   250
     3   260
     4   260
     5   267
     6   270
     7   270
     8   280
     9   280
    10   290
    11   290
    12   290
    13   300
    14   300
    15   300
    16   300
    17   300
    18   310
    19   310
    20   320
    21   330