2014-07-14 37 views
0

我想在Matlab中將未知長度的數組分成兩個隨機長度數組。我認爲我能夠做到,但它有點笨重。我也希望能夠保存所有可能的組合(子矩陣1和子矩陣2的矩陣),但我在這樣做時遇到了困難,因爲它不能保存在矩陣中,因爲它們都具有不同的長度。我應該使用單元格嗎?將數組分爲兩個隨機長度數組

這是我的用於拆分陣列

Array = [1 2 4 5 6 2 3] 
x = randi(length(Array)) 
newArray1 = Array(1:x) 
newArray2 = Array(x+1:end) 

想運行上面的代碼幾次和ARRAY1和陣列2的每個組合保存在其自己的基質或細胞等代碼下面

all_of_Array1 = [all_ofArray1:newArray1] 
all_of_Array2 = [all_ofArray2:newArray2] 

謝謝!

+1

使用'x = randi(length(Array));''newArray2'可能是空的。使用'x = randi(length(Array)-1);'如果你不想要那個 –

+1

@LuisMendo,但是你也不想'x'出於同樣的原因吧?所以不應該是'x = randi(length(Array)-2)+ 1'? – Dan

+0

@Dan不,因爲'randi'從1開始,而不是在0。'newArray1 = Array(1:x)'''x'等於'1'很好 –

回答

2

所以你只是想要一個循環?

%//Pre-allocation 
n = 10; 
newArray1{n} = []; 
newArray2{n} = []; 

for k = 1:n 
    %//Generate Array here if it changes at each iteration 
    Array = [1 2 4 5 6 2 3] 
    x = randi(length(Array)-1); 
    newArray1{k} = Array(1:x) 
    newArray2{k} = Array(x+1:end) 
    %//Or replace the 2 lines above with newArray{k,1}=... and newArray{k,2}=... 
end