Embedding an array into another: vectorization method
Afficher commentaires plus anciens
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 commentaires
dpb
le 25 Mai 2017
What are p, q, r, ... ? Constants, additional vectors, ... ?
Réponse acceptée
Plus de réponses (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 commentaires
Andrei Bobrov
le 25 Mai 2017
Modifié(e) : Andrei Bobrov
le 25 Mai 2017
+1
Z = (min([A(:,1);B(:,1)]):max([A(:,1);B(:,1)]))';
Z(:,2) = interp1(B(:,1),B(:,2),Z,'previous');
Tanmay
le 25 Mai 2017
Catégories
En savoir plus sur Whos dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!