How to split a matrix?

1 visualización (últimos 30 días)
Moe
Moe el 18 de Feb. de 2016
Comentada: Moe el 22 de Feb. de 2016
Hello everyone,
I have the matrix A as follow:
A = [25,240,15,H;25,255,10,R;25,265,20,H;63,240,10,W;63,250,35,L];
The first column in matrix A is the ID that indicates that which row is belongs to what ID (e.g. the first,second and tird row are belongs to ID = 25 , and, forth and fifth row are belong to ID = 63.)
So, I want matrix B like to follow:
B = [ID 240 245 250 255 260 265 270 275 280
25 H H H R R H H H H
63 W W L L L L L L L];
Each DU is divided by 3 (e.g. 15/3 = 5) and then by each of these 5 is added to the ST (e.g. 240, 245 (=240+5), 250 (=245+5).
  1 comentario
Moe
Moe el 18 de Feb. de 2016
Characters H, R, W and L can change with any numbers as well. For example, instead of H = 100, R = 101, W = 102, L = 103.

Iniciar sesión para comentar.

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 19 de Feb. de 2016
Editada: Andrei Bobrov el 21 de Feb. de 2016
n = xlsread('try1.xlsx',1,'A2:D6');
[a1,~,c1] = unique(n(:,1));
c3 = (n(:,3)-240)/5+1;
c4 = n(:,end)/5;
n2 = n(:,2);
z = accumarray(c1,c4);
b = cumsum(accumarray([c3,c1],1,[z(1),max(c1)]));
out1 = n2(bsxfun(@plus,b,cumsum([0,b(end,1:end-1)])))';
out = [nan,240+(0:z(1)-1)*5;[a1,out1]]
  5 comentarios
Andrei Bobrov
Andrei Bobrov el 21 de Feb. de 2016
I corrected answer and corrected your data (see try2_1.xlsx)
Moe
Moe el 22 de Feb. de 2016
Grear Andrei, Thanks!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing 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!

Translated by