2012-11-04 96 views
3

我輸入如下:展開矩陣(MATLAB)

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是輸出兩次因爲在第一列中的值是與同爲7

+0

是X還是Y很大? – Bitwise

+0

@Bitwise:不是很大,會少於100. – Geoff

回答

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 
+0

很棒 - 謝謝! – Geoff

2

這(矢量):

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

編輯:

有一個小錯誤,現在它的工作。