how to edit this matrix
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Michael
el 4 de Feb. de 2014
Comentada: Michael
el 6 de Feb. de 2014
I have a matrix B that has three columns. A week number is in the first column, a day number is in the second column, and data is in the third column.
B=
1 6 9
3 15 11
4 23 11
5 30 11
6 37 12
6 38 11
6 39 10
9 58 12
10 65 13
What I want to do is turn this into a matrix with 10 rows, one for each week. Whenever there is a week with no data, like week 2 and week 7, I want to add a row with the proper week number, but zeros for the day number and the data. Also, whenever there is a week with more than 1 data entry, like week 6, I want to convert that to one row with 6 as the week number, any value for the day number, and the mean of the data values as the one data value. In other words, I want to convert matrix B into:
C=
1 6 9
2 0 0
3 15 11
4 23 11
5 30 11
6 38 11
7 0 0
8 0 0
9 58 12
10 65 13
How can I go about doing this?
1 comentario
Walter Roberson
el 4 de Feb. de 2014
I notice you have edited the question, but as I read, I do not notice the difference between the current version and the original ?
Respuesta aceptada
Walter Roberson
el 4 de Feb. de 2014
widx = B(:,1);
dayvec = accumarray(widx, B(:,2), [], @min);
valvec = accumarray(widx, B(:,3), [], @mean);
C = [(1:max(widx)).', dayvec(:), valvec(:)];
5 comentarios
Walter Roberson
el 6 de Feb. de 2014
Setting weekvec like that is not needed. Leave that line out and use
C = [(1:length(dayvec)).', dayvec(:), valvec(:)];
Más respuestas (0)
Ver también
Categorías
Más información sobre Dates and Time 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!