Сравнение значений столбцах

Форум, посвященный общим вопросам, связанным с MATLAB

Модератор: Admin

ohlamon77
Пользователь
Сообщения: 9
Зарегистрирован: Пн фев 18, 2019 3:41 pm

Сравнение значений столбцах

Сообщение ohlamon77 » Пт июл 05, 2019 1:02 pm

Здравствуйте! Мне надо создать алгоритм при котором проверялось правильность столбцов

Код: Выделить всё

for i = 1:length(а)
if r(i)>=r(i+1);
   c(i)=r(i);
elseif r(i)<r(i+1);
      c(i)=0 ;
   end
end

а = это мой максимум
r =это его положение
c =новая переменная если r верный
Такой вариант не подходит. Суть проблемы, что я знаю, первое положение правильное r(1) = 200, но все остальные надо проверить , по пути r(1) больше или меньше r(2)+50, r(2)=240 проверку проходит, далее r(2) с r(3) и т.д.

Jey
Пользователь
Сообщения: 2702
Зарегистрирован: Вт сен 12, 2006 2:21 pm

Re: Сравнение значений столбцах

Сообщение Jey » Пт июл 05, 2019 1:28 pm

Как минимум должно быть так.

Код: Выделить всё

for i = 1:length(r)-1

   c(i)=0;
   
   if (r(i) >= r(i+1))
   
      c(i)=r(i);
   end
end

А про а вообще не понял...
Помощь в Матлабе / Matlab, Qt за деньги.
Помощь в html, css, jquery, MVC за деньги.
Помощь в C# / C sharp / Си шарп за деньги.
Вконтакте: https://vk.com/id122995106
или Личное сообщение на форуме.
http://ПунктыПроката.рф

ohlamon77
Пользователь
Сообщения: 9
Зарегистрирован: Пн фев 18, 2019 3:41 pm

Re: Сравнение значений столбцах

Сообщение ohlamon77 » Пт июл 05, 2019 1:38 pm

Jey писал(а):Как минимум должно быть так.

Код: Выделить всё

for i = 1:length(r)-1

   c(i)=0;
   
   if (r(i) >= r(i+1))
   
      c(i)=r(i);
   end
end

А про а вообще не понял...

сам код

Код: Выделить всё

[a,r]=max(MorMatrix);
for i = 1:length(r)-1  % я не пойму почему -1 ?

   c(i)=0;
   
   if (r(i) >= r(i+1))
   
      c(i)=r(i);
   end
end

очень странно стирает некоторые значения, первых двух вообще нету, есть 4 которое точно ложно

Jey
Пользователь
Сообщения: 2702
Зарегистрирован: Вт сен 12, 2006 2:21 pm

Re: Сравнение значений столбцах

Сообщение Jey » Пт июл 05, 2019 1:43 pm

-1, потому что в теле цикла есть r(i+1). В противном случае, на последнем шаге цикла, будет обращение к индексу, которого не существует.
Помощь в Матлабе / Matlab, Qt за деньги.
Помощь в html, css, jquery, MVC за деньги.
Помощь в C# / C sharp / Си шарп за деньги.
Вконтакте: https://vk.com/id122995106
или Личное сообщение на форуме.
http://ПунктыПроката.рф

ohlamon77
Пользователь
Сообщения: 9
Зарегистрирован: Пн фев 18, 2019 3:41 pm

Re: Сравнение значений столбцах

Сообщение ohlamon77 » Пт июл 05, 2019 1:46 pm

Jey писал(а):-1, потому что в теле цикла есть r(i+1). В противном случае, на последнем шаге цикла, будет обращение к индексу, которого не существует.

Просто первые два значения это 200 240 , потом 700, я смотрю на с(i) , а там первых двух нету

Jey
Пользователь
Сообщения: 2702
Зарегистрирован: Вт сен 12, 2006 2:21 pm

Re: Сравнение значений столбцах

Сообщение Jey » Пт июл 05, 2019 2:04 pm

Потому что у Вас алгоритм такой.
200 >= 240? нет, c(1) = 0
240 >= 700? нет, с(2) = 0
700 >= ...
Помощь в Матлабе / Matlab, Qt за деньги.
Помощь в html, css, jquery, MVC за деньги.
Помощь в C# / C sharp / Си шарп за деньги.
Вконтакте: https://vk.com/id122995106
или Личное сообщение на форуме.
http://ПунктыПроката.рф

ohlamon77
Пользователь
Сообщения: 9
Зарегистрирован: Пн фев 18, 2019 3:41 pm

Re: Сравнение значений столбцах

Сообщение ohlamon77 » Пт июл 05, 2019 2:21 pm

Jey писал(а):Потому что у Вас алгоритм такой.
200 >= 240? нет, c(1) = 0
240 >= 700? нет, с(2) = 0
700 >= ...

Код: Выделить всё

for i = 1:length(a)-1
   f(i)=0;
      if (r(i)>= r(i+1))
      c(i)=0;
      else (r(i)+50 <= r(i+1))
      c(i)=r(i);   
   end
end

Я попробовал такой алгоритм, где если 200+50 меньше чем 240 от пишется, но не пойму почему при моих значениях 4 и 5: 202 и 216 они пропадают, а 194 на 6 остаётся

п.с. извините решил переименовать для себя значения

п.п.с. т.е. просто алгоритм 200+50 или -50 больше 240 , 240 тоже самое по отношению к 700 , 700 по отношению к 202 , 202 к 216 и т.д. не возможет?
Последний раз редактировалось ohlamon77 Пт июл 05, 2019 2:41 pm, всего редактировалось 2 раза.

Jey
Пользователь
Сообщения: 2702
Зарегистрирован: Вт сен 12, 2006 2:21 pm

Re: Сравнение значений столбцах

Сообщение Jey » Пт июл 05, 2019 2:26 pm

Чему равно a?
Чему равно r?
Чему должно быть равно c?
Помощь в Матлабе / Matlab, Qt за деньги.
Помощь в html, css, jquery, MVC за деньги.
Помощь в C# / C sharp / Си шарп за деньги.
Вконтакте: https://vk.com/id122995106
или Личное сообщение на форуме.
http://ПунктыПроката.рф