Переназначение значений вектора с использованием вложенных циклов 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)