Embedding an array into another: vectorization method
Show older comments
I have two arrays. The first one is a consecutive sequential one, like:
seq1 =
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
...continues
The second one is like:
seq2 =
2 250
3 260
5 267
6 270
8 280
10 290
13 300
18 310
20 320
21 330
...continues
I need to embed `seq2` into `seq1` in such a way that I end up with the sequence:
seq3 =
1 0
2 250
3 260
4 260
5 267
6 270
7 270
8 280
9 280
10 290
11 290
... continues
I could do this with loops but the arrays are really big so I don't want to use two `for` loops, it is taking too long. How can I do this in a vectorised manner?
2 Comments
dpb
on 25 May 2017
What are p, q, r, ... ? Constants, additional vectors, ... ?
Accepted Answer
More Answers (1)
>> A = [
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0 ];
>> B = [
2 250
3 260
5 267
6 270
8 280
10 290
13 300
18 310
20 320
21 330 ];
>> Z = A;
>> Z(:,2) = interp1(B(:,1),B(:,2),A(:,1),'previous')
>> Z =
1 NA
2 250
3 260
4 260
5 267
6 270
7 270
8 280
9 280
10 290
2 Comments
Andrei Bobrov
on 25 May 2017
Edited: Andrei Bobrov
on 25 May 2017
+1
Z = (min([A(:,1);B(:,1)]):max([A(:,1);B(:,1)]))';
Z(:,2) = interp1(B(:,1),B(:,2),Z,'previous');
Tanmay
on 25 May 2017
Categories
Find more on Whos in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!