Clear Filters
Clear Filters

How can I insert missing rows in a matrix

5 views (last 30 days)
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.

Accepted Answer

Jos (10584)
Jos (10584) on 30 Mar 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 Comments
Mohammad Sayeed
Mohammad Sayeed on 30 Mar 2015
It worked perfectly Brother. Thank you very much. Yes the serial numbers are consecutive positive integers. But say, if I suppose to have consecutive time periods in the first row such as 12:01:00 AM and so on instead of consecutive numbers then is it possible solve the problem if I have missing data in some time periods? Please Let me if you can Help me. However, thanks again for the above codes.
Mohammad Sayeed
Mohammad Sayeed on 30 Mar 2015
Dear @Jos, If I have more observations per day say I will have hourly data so I have serial number 1:24 in each day then how can I make required changes in your codes as I have different number of observations in different data set? Please let me know.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!