Переназначение значений вектора с использованием вложенных циклов for в matlab?

В Matlab у меня есть два вектора, ind и ind3. ind = [1 2 3 4 5] и я хочу определить ind3 на основе ind так, чтобы я хотел, чтобы ind (3), ind(4) и ind(5) были ind3(1) и ind3(2) и ind3 (3). так что ind3 = [ind(3) ind(4) ind(5)], но по какой-то причине я не могу этого сделать. Я думал, что было бы просто использовать вложенные циклы for, но на самом деле это не работает.

for i=3:5
  for n=1:3
    ind3(n,:) = ind(i,:);
  end 
end 

Логически пройдя циклы for, я знаю, почему вывод неправильный... но я не понимаю, как еще это сделать? Я что, глупый и упускаю что-то действительно простое?!

Я знаю, что это, вероятно, простой ответ, но кто-нибудь может помочь??

Благодарю.

3 ответа

Решение

Если вы хотите ind3 = [ind(3) ind(4) ind(5)] и хотите сделать это в цикле, вам нужен только один цикл. Кроме того, поскольку вы имеете дело с векторами, у вас есть только одна индексная переменная.

for n=1:3
  ind3(n) = ind(n + 2);
end

Может быть, я неправильно понимаю ваш вопрос, но вы этого хотите?

ind3=ind(3:5)

Прежде всего, вы сказали, что ваши массивы одномерные (они не являются матрицами), и в вашем коде, вызывая ind3(n,:) или же ind(i,:) вы относитесь к ним как к двумерным массивам.

Пока все здесь одномерно, вам нужен только один цикл for:

for i=3:5
    ind3(i)=ind(i-2);
end

Пояснение: здесь i=3,4,5, За i=3 Вы назначаете ind3[3]=ind[1], за i=4: ind3[4]=ind[2], за i=5: ind3[5]=ind[3],

Или вы можете просто позвонить ind3=ind(3:5)

Другие вопросы по тегам