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に等しい場合、2番目の行に含まれる2つの値を出力したいと思います。このような:

 Y =

     1
     2
     3
     4
     5
     5
     6
     7
     7
     8

ここで、最初の列の値は2であり、7でも同じであるため、5は2回出力されます。

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 に答える