insert specific number of rows into matrix if condition is met and fill new cells with specific value
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Adriana Schatton
le 25 Nov 2019
Commenté : Andrei Bobrov
le 25 Nov 2019
Hi,
I have a 2-column matrix like this:
a = [1 0; 2 0; 4 0; 8 0]
I would like to change this matrix into a matrix like this:
a_new = [1 0; 2 0; 3 NaN; 4 0; 5 NaN; 6 NaN; 7 NaN; 8 0]
i.e. matrix a with consecutive numbers in the first column and an empty cell or NaN in the added second column.
I managed to insert single rows where they should be inserted:
first_column = a(:,1);
d = diff(first_column);
f = find(d>1);
row = [0, NaN];
a = insertrows(a,row,f)
... giving me this:
a =
1 0
2 0
0 NaN
4 0
0 NaN
8 0
But I would need to insert e.g. only one row after row number 3 but three rows after row number 3.
Moreover, I want the new value of the first column to be consecutive number.
I appreciate your help a lot!!
0 commentaires
Réponse acceptée
Andrei Bobrov
le 25 Nov 2019
In your case:
n = max(a(:,1));
out = [(1:n)',nan(n,1)];
out(a(:,1),2) = a(:,2);
2 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Graph and Network Algorithms dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!