Я хочу применить оператор IF к следующей матрице:
А =
2 5 2 4 8
2 5 0 0 0
2 4 0 0 0
6 8 0 0 0
9 5 0 0 0
4 7 0 0 0
8 1 0 0 0
На данный момент у меня есть следующее:
if A(1,2)>A(1,4),
A(2,3)=A(1,4);
A(2,4)=(A(1,5))+1;
end
if A(1,2)<A(1,4),
A(2,4)=(A(1,4))-1;
A(2,4)=(A(1,4))-(A(2,3));
end
В вышеупомянутом коде я сравниваю только 2-й и 4-й столбцы первой строки. Затем из первой строки строится вторая строка.
Затем я хочу сравнить вторую строку и использовать ее для построения третьей строки ... и так далее ... во всех 7 строках.
Могу я добавить 1: n, чтобы изменить это?
Какие-либо предложения?
2
Kelly
22 Сен 2012 в 22:42
Мне так не кажется. Вы вычисляете A (2,4) на основе A (1,4). Затем A (3,4) будет вычисляться на основе нового значения A (2,4). У вас есть зависимость по данным ... И, похоже, вы ошиблись во втором операторе if. Вы дважды присваиваете один и тот же индекс A.
– angainor
22 Сен 2012 в 22:58
Могут ли индексы увеличиваться на 1 каждый раз в цикле?
– Kelly
22 Сен 2012 в 23:13
1 ответ
Лучший ответ
Вы можете написать следующий цикл
for i=1:size(A, 1)-1
if A(i,2)>A(i,4),
A(i+1,3)=A(i,4);
A(i+1,4)=A(i,5)+1;
end
if A(i,2)<A(i,4),
A(i+1,4)=A(i,4)-1;
% wrong index here? You assign twice to the same A entry.
% the above line has no effect...
A(i+1,4)=A(i,4)-A(i+1,3);
end
end
1
angainor
22 Сен 2012 в 23:23
Спасибо! Это то, что я искал. Да, я допустил пару ошибок в кодировании ... пытался изобразить на примере большую матрицу. У меня были проблемы с оператором for и индексами. Это проясняет ситуацию.
– Kelly
23 Сен 2012 в 01:45
Похожие вопросы
Новые вопросы
algorithm
Алгоритм - это последовательность четко определенных шагов, которые определяют абстрактное решение проблемы. Используйте этот тег, если ваша проблема связана с дизайном алгоритма.