How can I insert missing rows in a matrix
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Mohammad Sayeed
el 30 de Mzo. de 2015
Comentada: Mohammad Sayeed
el 30 de Mzo. de 2015
Hi Guys I have a matrix like this: x=[1 4; 4 6;2 3;3 2;4 2;1 3]. where I am showing data of three days. The first row is like a serial number and second row contains the data. I should have 4 data in each day and the first row of the matrix should look like this: x(:,1)= (1 2 3 4 1 2 3 4 1 2 3 4)' But as I have missing data i don't have this matrix. Now I want to create a matrix where all the missing data will be shown with NaN or zero in the second column. So the output will look like : x=[1 4; 2 0;3 0;4 6;1 0;2 3;3 2;4 2;1 3;2 0;3 0;4 0]. That means I will show all the serial numbers in each day and 0 for the missing data. Can anyone help plz? Thank you.
0 comentarios
Respuesta aceptada
Jos (10584)
el 30 de Mzo. de 2015
This is not really trivial. Here is one approach:
x=[1 4; 4 6;2 3;3 2;4 2;1 3]
Data = x(:,2) ;
SerialNumber = x(:,1) ;
StartNewDay = diff([Inf ; SerialNumber]) < 0
Day = cumsum(StartNewDay)
NewX(:,1) = repmat(1:max(SerialNumber),1,max(Day)).'
M = accumarray([SerialNumber Day],x(:,2)) % build a matrix with zeros
NewX(:,2) = reshape(M,[],1)
This assumes that the serial numbers are consecutive positive integers.
2 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Data Preprocessing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!