2016-02-16 8 views
1

Этот код является разрезание случайных значений из вектора ch и создайте новый вектор a. Затем вставьте a в ch после удаления выбранного значения из chВставить вектор в вектор, Matlab

Что я должен изменить, чтобы быть результатом, как это:

, например, если a = [8; 4; 9], то результат:

ch = 5 8 4 9 6 7 

Код Matlab:

ch = [4; 5; 6; 7; 8; 9]; 

for i = 1:3 
    g = randi(3); 
    a(i) = ch(g); 
    ch(g) = []; 
end; 

startIdx = 2; 
finalIdx = startIdx + size(a,1) - 1; 
ch(startIdx:finalIdx) = a; 

disp (ch); 
+0

Извините .... что? – rayryeng

+0

@rayryeng, какая часть нечеткая? – shdotcom

+0

Ваш код, кажется, работает. Я не понимаю, чего вы хотите, и, пожалуйста, простите меня, если я груб, но язык в вашем вопросе немного сложно понять. – rayryeng

ответ

2

Попробуйте следующее:

ch = [4; 5; 6; 7; 8; 9]; 

for i = 1:3 
    g = randi(3); 
    a(i) = ch(g); 
    ch(g) = []; 
end; 

a = a'; % your problem probably come from mixing column/lines 

startIdx = 2; 
ch = [ch(1:startIdx); a; ch(startIdx+1:end)]; 


disp (ch); 
+0

Когда я запускаю код, я получил этот вывод: a = 5 6 4 ch = 7 8 5 6 4 8 9 Второй «8» не должен быть там, выход должен быть: ch = 7 8 5 6 4 9 – shdotcom

+0

Я включил это: ch (startIdx: end)]; до: ch (startIdx + 1: end)]; и его работы сейчас. Спасибо – shdotcom

+0

@shdotcom yup corrected –