3

我的输入如下:

X = [1 1; 1 2; 1 3; 1 4; 2 5; 1 6; 2 7; 1 8];

X =

 1     1
 1     2
 1     3
 1     4
 2     5
 1     6
 2     7
 1     8

我希望根据第一列的值输出一个新矩阵。如果值等于 1 - 输出将保持不变,当值等于 2 时,我想输出第二行中包含的两个值。像这样:

 Y =

     1
     2
     3
     4
     5
     5
     6
     7
     7
     8

其中 5 输出两次,因为第一列中的值为2和 7 相同

4

2 回答 2

2

这是(矢量化):

C = cumsum(X(:,1))
A(C) = X(:,2)
D = hankel(A)
D(D==0) = inf
Y = min(D)

编辑:

有一个小错误,现在它可以工作了。

于 2012-11-04T20:14:07.347 回答
0
% untested code:
Y = []; % would be better to pre-allocate 
for ii = 1:size(X,1)
   Y = [Y; X(ii,2)*ones(X(ii,1),1)];
end
于 2012-11-04T20:12:34.667 回答